面向对象概念
1,封装性:面向对象的核心思想,将对象的属性和行为封装,外界并不知道内部细节。
2,继承性:描述类之间的关系,继承可以对原有类直接进行扩展而不需要重写,这样就增强代码的重用性。
4,多态性:程序中的重名现象,同一个属性和方法在不同的类中具有不同的语义,简单的说就是同一个行为却得到不同的结果。
类
类是对像的抽象,用于描述一类对象共同的特征和行为。类中定义的叫成员变量和成员方法
class People{
//定义成员变量描述人的共同特征
String name,sex;
int age=60;
//定义成员方法描述人的一个共同行为
void speak(){
int age=12;
System.out.println("我叫"+name+sex+age"岁");
}
}
ps:在类中定义的叫成员变量而在方法中定义的叫局部变量。当出现成员变量和局部变量同名时方法将访问的是局部变量而非成员变量。
对象
类是对象的抽象无法完成具体的功能,所以需要根据类来创建实例对象
创建实例对象格式:People p=new People();
new创建一个People类型的实例对象并通过=将对象地址赋给People类型的变量p。
class People{
int age=60;
void speak(){
System.out.println(age+"岁";
}
}
class Example{
public static void main(String[] args){
//创建实例对象
People p1=new People();
People p2=new People();
p1.age=18; //通过实列对象为成员变量赋值
//通过实例对象调用成员方法
p1.speak();
p2.speak();
}
}
ps:p1和p2虽然同样都是访问成员变量age但却会输出不同的结果,是应为p1和p2是两个独立的对象,就像是一个老年人和一个年轻人一样,虽然都是问年龄但两人的年龄却是不同的,他们都有各自的age属性,所以为p1赋值并不会影响p2的age。
构造方法
1,方法名与类同名
2,没有返回值类型的声明
3,没有return语句
class People{
//将属性私有化
private String name;
private int age;
//无参构造方法
public People(){
name="李华";
age=20;
}
//有参构造方法
public People(String con_name ,int con_age){
name=con_name;
age=con_age;
}
void speak(){
System.println("我叫"+name+age);
}
}
class Example1{
public static void main(String[] args){
//分别创建两个实例对象
People p1=new People();
People p2=new People("张三",54);
p1.speak();
p2.speak();
}
}
ps;1,在new创建实列对象时会自动调用构造方法,无需显示调用。
2,构造方法可以重载
3,每个类必须有至少一个构造方法,如果没有类会自动定义一个没有方法体和参数的默认构造方法,该构造方法什么也没有执行。当定义构造方法后类将不会生成默认构造方法。
总结:多练习理清类与对象的关系