JavaSE04—类的封装,继承与多态
1. 类的封装
在面向对象法则中,是不允许用对象直接访问类中的属性,一般的开发中往往要将类中的属性封装起来(private),通过getter和setter等方法对封装的属性进行访问。
2. 类的继承
继承的格式:
class 子类名 extends 父类
Java继承只能直接继承父类中的公有属性和公有方法,而隐含地继承了私有属性。且Java中不允许多重继承,只允许多层继承。
1) 子类对象的实例化过程
super关键字:super关键字的主要功能是完成子类调用父类中的内容,也就是调用父类中的属性或方法。
super关键字不仅可用于调用父类中的构造方法,也可用于调用父类中的属性或方法。
2) 限制子类的访问
有些时候,父类并不希望子类可以访问自己的类中的全部的属性或方法,所以需要将一些属性和方法通过关键字”private”隐藏起来。
3. 覆写
当一个子类继承一个父类,而子类中的方法与父类中的方法的名称,参数个数,类型等都完全一致时,就称子类中的这个方法覆写了父类中的方法。
4. 类的多态
1) 向上转型
父类对象通过子类对象去实例化,实际上就是对象的向上转型。向上转型是不需要进行强制类型转换的,但是向上转型会丢失精度。
2) 向下转型
父类对象可以转换为子类对象,必须进行强制类型转换。
1. 类的封装
在面向对象法则中,是不允许用对象直接访问类中的属性,一般的开发中往往要将类中的属性封装起来(private),通过getter和setter等方法对封装的属性进行访问。
class Person
{
private String name;
private int age;
private void talk(){
System.out.println("我是"+name+",今年"+age"岁。 ");
}
public void setName(String str){
this.name = str;
}
public void setAge(int a){
if(a>0)
this.age = a;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
}
2. 类的继承
继承的格式:
class 子类名 extends 父类
Java继承只能直接继承父类中的公有属性和公有方法,而隐含地继承了私有属性。且Java中不允许多重继承,只允许多层继承。
1) 子类对象的实例化过程
super关键字:super关键字的主要功能是完成子类调用父类中的内容,也就是调用父类中的属性或方法。
class Person
{
String name;
int age;
public Person(String str,int a){
this.name = name;
this.age = age;
}
}
class Student extends Person
{
String school;
public Student(){
super("张三",25);//调用父类的构造方法
}
}
super关键字不仅可用于调用父类中的构造方法,也可用于调用父类中的属性或方法。
2) 限制子类的访问
有些时候,父类并不希望子类可以访问自己的类中的全部的属性或方法,所以需要将一些属性和方法通过关键字”private”隐藏起来。
3. 覆写
当一个子类继承一个父类,而子类中的方法与父类中的方法的名称,参数个数,类型等都完全一致时,就称子类中的这个方法覆写了父类中的方法。
class Person
{
String name;
int age;
public String talk(){
return "我是:"+this.name+",今年"+age+"岁";
}
}
class Student extends Person
{
String school;
public Student(String str,int a,String sch){
this.name = str;
this.age = a;
this.school = sch;
}
public String talk(){
return "我在"+this.school+"上学"
}
}
4. 类的多态
1) 向上转型
父类对象通过子类对象去实例化,实际上就是对象的向上转型。向上转型是不需要进行强制类型转换的,但是向上转型会丢失精度。
2) 向下转型
父类对象可以转换为子类对象,必须进行强制类型转换。