Java学习笔记—类与对象、继承与多态

本文介绍了Java中的继承、构造方法的使用、this()与super()的区别、方法的重载与覆盖(Override)、final关键字的三种用法以及多态性的概念,包括对象的向上转型与强制向下转型。通过Person、Student和Teacher类的实例展示了如何在实际编程中应用这些概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主要知识点:

学习时间: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;
        }

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值