主要知识点:
学习时间:2021.12.10
1⃣️继承格式:class 子类 extends 父类 {}
2⃣️Java在执行子类构造方法时、先调用Father类的无参构造对Father类初始化
3⃣️this()在同一类内调用其他构造方法(适合多参数重载之间互相调用),super()可以直接调用其Father类的构造
4⃣️this()和super()比较:
this()和super()必须放在构造方法的第一行、正是这个原因,两者无法存在于一个构造函数之中。
5⃣️掌握Overload和Override:
且可以通过直接的Annoatation注解,标志、检查覆写函数
@Override
public void tell(){}//被覆写的tell函数
6⃣️final的三个作用:
1.声明为不能被继承的类,前面加final
final class JavaDemo{}
2.声明为无法被覆写的函数
public final void function(){}
3.定义常量、全局常量
private final int ON = 1;//类似开关
private static final int count = 0;//全局静态常量
7⃣️方法多态性有函数的重载等等,对象的多态性为:
对象的自动向上转型与强制向下转型,为了防止ClassCastException,可以在转型前使用instanceof关键字进行实例判断
8⃣️所有类均继承Object类,所以引用数据类型可以向Object类进行向上转型,利用Object类进行函数接受参数或返回类型的统一
⬆️其中:获取对象信息可以对Object类中的to进行String覆写操作(@Override)
学习代码如下:
class Person{
private String name;
private String sex;
private int age;
public static String Country;
Person(){}
Person (String name,String sex)
{
this.name = name ;
this.sex = sex ;
}
@Override
public String toString ()//获取对象信息
{
return "该Person的信息为:姓名" +this.name+" 性别:"+this.sex+" 国家:"+Country ;
}
public String getName()
{
return name;
}
public String getSex()
{
return sex;
}
public void setCountry(String country)
{
Country = country;
}
}
class Student extends Person
{
private long ID;
private String School;
Student (String name,String sex,long ID,String School){
super(name,sex);
this.ID = ID;
this.School = School;
}
public void tell()
{
// super.tell();//super调用上级同名函数
System.out.println("该Student的信息为:姓名" +this.getName()+" " +
"性别:"+this.getSex() +" 学校:"+this.School
+ " ID:"+this.ID+" 国家:"+Country);
}
}
class Teachers extends Person
{
public void tell()
{
System.out.println( "Teacher类的tell函数" );
}
}
class Channel
{ /*
用来接受Person类的对象,由于存在自动向上转型的机制,所以可以接受所有子类的实例对象
*/
public static void send(Person per) //由于是静态的、类名即可用匿名对象调用
{
per.toString();
}
}
public class JavaDemo {
public static void main(String[] args) {
Person per_1 = new Person();
per_1.setCountry("中华人民共和国 ");
Channel.send(per_1);
Person stu_1 = new Student("李四","男",001,"武汉科技大学");
Channel.send(stu_1);
System.out.println( per_1 );
Object obj_1 = new Person();//向上👆转型
if (obj_1 instanceof Person)//实例化判断
{
System.out.println(" 向下转型ing");
Person per = (Person) obj_1;
}
}
}