面向对象是一个编程理念。最重要的概念是类(Class)和对象(Object)
认识类和对象
1.类名:由字母,下划线,数字或美元符号组成,且第一个字符不能是数字,
2.定义类:首字母大写如Demo,大括号里的是语句块个体
3.声明对象:类名 对象名=new 类名 如:Teacher zhangsan= new Teacher();
ps:类名尽量选择有英文意思的来选择做类名
4.java可以有很多类,最多只能有一个(Public)公共类,Public类必须是原文件的名字。
静态变量和静态函数
1.static修饰的成员称为类成员,由类名,类变量|类方法来引用
2.static关键字可以修饰变量和方法
特点:随着类的加载而加载
ps:静态方法中只能出现静态成员
3.静态函数就是在普通函数的定义钱加上关键字static
静态代码块
static{//代码块}
执行顺序:静态代码块→构造代码块→构造方法
下面我们来看看封装,继承,多态 ,接口
一、封装
定义:是面向对象的基本特征之一。
实现封装有以下两个步骤
1.将不能暴露的成员隐藏起来,例如Customer类中的age,不能让其在类的外部被直接赋值。
实现方法是将该成员定义为私有的,在成员定义钱加上修饰符private
2.用公共方法来暴露暴露对该隐藏成员的访问,可以给函数加上修饰符public,将该方法的定义为公共的。
权限修饰符
定义变量 [修饰符] 变量类型 变量名称; [修饰符] 变量类型 变量名称 = 初始值;
其中权限修饰符有:public、protected、private、默认
它们之间的定义如下:
public:公共权限允许任何类去访问
protected:受保护权限,允许有继承关系的子类去访问
private:私有权限,只能在定义的类中访问,在其他类中不可访问
默认:相同的包可以访问权限,在没有声明权限时默认为默认权限
权限从大到小的顺序public>protected>默认>pvivate
成员访问控制修饰符
分别是:private,default,protected,public
代码如下:
public class Teacher{
private String name;
String sex;
protected int age;
public void display(){}
}
特点:
1.private类的成员只能在定义它的类的内部被访问。
2.default 类的成员可以在定义它的类的内部被访问,也可以被这个包中的其他类访问
3.protected 类的成员可以在定义它的类的内部被访问,也可以被这个包中的其他类访问,还可以被包外的子类访问。
4.public类成员可以在定义它的类的内部被访问,也可以包内,包外的所有其他类访问。
使用类中类
定义:在类中去定义一个类
代码如下:
class Interior{
int a;
void funInterior(){
Inner inner=new Inner();
}
class Interior{
int b;
void fun(){
a=5;
this.b=8;}
}
}
ps:1.内部类中的成员只能在内部类范围内才能使用,外部类不能像使用自己的成员变量一样去使用它们
2. 如果在内部类中使用this,且只能代表内部类的对象,只能去引用内部类的成员
二、继承
定义:在Java中被继承的类称为父类,基类或超类,与之对应的类称为子类或派生类。继承是通过关键字extends实现的,格式如下:
class 子类 extends 父类{}
ps:1.object没有父类,它是所有类的父类(默认的情况下)
2.如果一个成员要被子类继承之后使用,这个成员不能是private类型,因为私有的成员不能在类的外部去使用,当然了也不能被子类使用,一般情况下,成员变量定义为protected 类型,成员函数定义为public类型
成员覆盖
this.()调用自身的方法
super.()调用父类的方法
constractor构造方法:先执行父类参数构造方法。
父类带参数的构造方法:super.(+参数)
重写(Override)
定义:如果子类的函数定义为父类相同,最后调用时时调用子类中的方法称为重写或覆盖
规则:
1.参数列表要与重写的方法要相同
2.不能定义一个名称和参数列表与父类相同的函数,返回类型不同的话,系统会报错
3.在覆盖的情况下,如果一定要在子类中调用父类的成员函数,可以使用关键字super,调用方法是super.函数名 代码如下:
class Student extends
面向对象是一个编程理念。最重要的概念是类(Class)和对象(Object)
认识类和对象
1.类名:由字母,下划线,数字或美元符号组成,且第一个字符不能是数字,
2.定义类:首字母大写如Demo,大括号里的是语句块个体
3.声明对象:类名 对象名=new 类名 如:Teacher zhangsan= new Teacher();
ps:类名尽量选择有英文意思的来选择做类名
4.java可以有很多类,最多只能有一个(Public)公共类,Public类必须是原文件的名字。
静态变量和静态函数
1.static修饰的成员称为类成员,由类名,类变量|类方法来引用
2.static关键字可以修饰变量和方法
特点:随着类的加载而加载
ps:静态方法中只能出现静态成员
3.静态函数就是在普通函数的定义钱加上关键字static
静态代码块
static{//代码块}
执行顺序:静态代码块→构造代码块→构造方法
下面我们来看看封装,多态,继承
一、封装
定义:是面向对象的基本特征之一。
实现封装有以下两个步骤
1.将不能暴露的成员隐藏起来,例如Customer类中的age,不能让其在类的外部被直接赋值。
实现方法是将该成员定义为私有的,在成员定义钱加上修饰符private
2.用公共方法来暴露暴露对该隐藏成员的访问,可以给函数加上修饰符public,将该方法的定义为公共的。
权限修饰符
定义变量 [修饰符] 变量类型 变量名称; [修饰符] 变量类型 变量名称 = 初始值;
其中权限修饰符有:public、protected、private、默认
它们之间的定义如下:
public:公共权限允许任何类去访问
protected:受保护权限,允许有继承关系的子类去访问
private:私有权限,只能在定义的类中访问,在其他类中不可访问
默认:相同的包可以访问权限,在没有声明权限时默认为默认权限
权限从大到小的顺序public>protected>默认>pvivate
成员访问控制修饰符
分别是:private,default,protected,public
代码如下:
public class Teacher{
private String name;
String sex;
protected int age;
public void display(){}
}
特点:
1.private类的成员只能在定义它的类的内部被访问。
2.default 类的成员可以在定义它的类的内部被访问,也可以被这个包中的其他类访问
3.protected 类的成员可以在定义它的类的内部被访问,也可以被这个包中的其他类访问,还可以被包外的子类访问。
4.public类成员可以在定义它的类的内部被访问,也可以包内,包外的所有其他类访问。
使用类中类
定义:在类中去定义一个类
代码如下:
class Interior{
int a;
void funInterior(){
Inner inner=new Inner();
}
class Interior{
int b;
void fun(){
a=5;
this.b=8;}
}
}
ps:1.内部类中的成员只能在内部类范围内才能使用,外部类不能像使用自己的成员变量一样去使用它们
2. 如果在内部类中使用this,且只能代表内部类的对象,只能去引用内部类的成员
二、继承
定义:在Java中被继承的类称为父类,基类或超类,与之对应的类称为子类或派生类。继承是通过关键字extends实现的,格式如下:
class 子类 extends 父类{}
ps:1.object没有父类,它是所有类的父类(默认的情况下)
2.如果一个成员要被子类继承之后使用,这个成员不能是private类型,因为私有的成员不能在类的外部去使用,当然了也不能被子类使用,一般情况下,成员变量定义为protected 类型,成员函数定义为public类型
成员覆盖
this.()调用自身的方法
super.()调用父类的方法
constractor构造方法:先执行父类参数构造方法。
父类带参数的构造方法:super.(+参数)
重写(Override)
定义:如果子类的函数定义为父类相同,最后调用时时调用子类中的方法称为重写或覆盖
规则:
1.参数列表要与重写的方法要相同
2.不能定义一个名称和参数列表与父类相同的函数,返回类型不同的话,系统会报错
3.在覆盖的情况下,如果一定要在子类中调用父类的成员函数,可以使用关键字super,调用方法是super.函数名 代码如下:
class StudentGrades extends Student {
private String name;
public StudentGrades(String title,String name){
this.title=title;//调用自身方法
this.name=name;}
public void show(){
super.show();//调用父类的show函数
System.out.println("StudentGrades .show()");
}
}
重载(overload)
定义:同一个类里面的多个方法可以使用相同的名字,但参数必须不同,返回类型可以一样也可以不一样
规则:
1.方法名相同
2.参数不同
3.返回类型可以相同也可以不相同
重写与重载的区别
1.有相同方法名,参数,返回类型的方法,子类的方法就是方法重写
2.重写实现的是编译时的多态性,重载实现的是运行时的多态性
三、多态
分为:静态多态和动态多态
定义:面向对象且采取多种不同的行为方式
ps:函数返回类型是父类类型,实际却是返回可以是子类对象
向上转型(小转大)
格式:父类 对象名=new 子类();
如:Animal animal=new dog();
四、接口(单继承,多接口)
定义:在抽象类中可以含有普通成员函数,所有抽象类的函数都是抽象的,也可以定义为接口
格式:interface 接口名
{
//语句
}
继承格式:【修饰符】 interface 接口名 【extends】父接口
ps:接口中的成员函数默认都是public 访问类型
一个类可以继承一个父类的同时实现一个或多个接口,多个接口用逗号隔开
如:class 子类 extends 父类 implements 接口1,接口2,……{}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)