JXNU1999python 发表于 2022-1-3 09:50

Java自学记录Day27

Java自学记录Day27

一、学习目标:

super关键字的使用与IDEA开发工具的配置

二、学习内容

(一)、了解super关键字的基本用法

1、super关键字

代表的是当前对象父类型的特征。

2、super.name调用父类中的属性,私有化属性不可以被访问

Test类

        public class TestPet extends Dog{
          public TestPet(){
                this(4);
          }
          public TestPet(int number){
                super(5);
          }
          public void test(){
       
                System.out.println(super.name);
                System.out.println(super.name="猪头");
       
          }
          public void pet(){
       
          }
          public static void main(String[] args) {
                TestPet master=new TestPet();
                master.test();
       
          }
        }
        public class Dog extends Pet{
          String name="旺财";
          int age=2;
          public Dog(){
                        this(1);//调用本类的构造方法
                        System.out.println(super.name);//二哈
          }
          public Dog(int age){
                        System.out.println(name)//旺财
                System.out.println(super.name);//二哈
          }
       
        }
Pet类

        public class Pet {
          String name="二哈";
          int age=0;
          public Pet(){
          }
          public Pet(String name, int age){
                super();//可省略
                this.age=age;
                        this.name=name;
                System.out.println("222222");
          }
        }

3、super();调用父类中的无参数构造方法,只能在子类中的构造方法第一行调用父类的构造方法。

并且一个构造方法中只能调用父类中一个构造方法,该语句书写在构造方法第一行。

super(int number);调用父类中的有参数构造方法。

Dog类

        public class Dog extends Pet{
          String name="旺财";
          int age=2;
          public Dog(){
                        this(1);//调用本类的构造方法
                        System.out.println(super.name);//二哈
          }
          public Dog(int age){
                super("大黄",3);//书写在第一行,调用父类pet类中的含参数构造方法
                System.out.println(age);//2
                        System.out.println(super.age);//3
                System.out.println(super.name);//大黄
          }
       
        }
4、什么时候使用super,子类和父类有相同的属性和方法,在子类中调用父类的方法或属性。如果调用的是构造方法,则必须在子类的构造方法中调用且在子类构造方法第一行。

(二)、区分this和super关键字的不同

1、相同点:

关键字都不能在静态方法中使用,可以在实例方法和构造方法中使用。

在调用构造方法时,只能出现在构造方法的第一行,this();和super();

2、不同点

this.name表示当前对象的属性,super.name表示该对象父类中的name属性。

        System.out.println(super.name);
this()是调用本类中的构造方法,super()是调用父类中的构造方法。

当父类和子类中都有相同的变量,调用父类变量是super.name,name是子类中的变量。

        public class Dog extends Pet{
          String name="旺财";
          int age=2;
          public Dog(){
                        this(1);//调用本类的构造方法
                        System.out.println(super.name);//二哈
          }
          public Dog(int age){
                        System.out.println(name)//旺财
                System.out.println(super.name);//二哈
          }
       
        }

(三)、配置IDEA开发工具。

1、设置中搜索font修改字体大小

2、新建一个project,这里的project相当于eclipse中的一个工作区。找到最下的empty project。

3、新建一个module,选择java模块。

4、在模块里面可以新建各种文件,包括java class文件


知识点1:抽象类

1、类和类之间有共同特征;将这些特征提取出来形成的就是抽象类,因为类本身是不存在的,所以抽象类无法创建对象。

        abstract class IdCard extends Card{
          public static void main(String[] args) {
                Card ming= new IdCard();//错误的,无法为抽象类创建对象。
          }
        }
        abstract class Card{
          public abstract void make();
        }
2、抽象类属于引用数据类型。抽象类的语法是

       [修饰符列表] abstract class 类名{
        类体;
        }
        public abstract class Test{
        }

3、抽象类是无法创建对象的,是用来被继承的,属于父类。final和abstract是对立的,不能联合使用。

4、抽象类的子类可以是抽象类,抽象类的父类一定是抽象类。抽象类虽然无法实例化,但是抽象类有构造方法,这个构造方法可以供子类使用。

知识点2:抽象方法

1、抽象方法表示没有实现的方法,是没有方法体的方法,修饰符列表中有abstract

​        public abstract void doSome();

2、抽象方法必须出现在抽象类中,抽象类中可以没有抽象方法。

        public abstract class Card{
          public abstract void make();
        }
        abstract class Card{
        }
3、一个非抽象的类继承抽象的类,需要将抽象方法覆盖/重写。

        class IdCard extends Card{
          public void make() {
                System.out.println(666);//方法重写
          }
        }
        public abstract class Card{
          public abstract void make();
        }

peiy 发表于 2022-1-3 13:28

谢谢楼主的分享

maojiuming 发表于 2022-1-3 13:42

楼主加油

qq8393991739 发表于 2022-1-3 16:16

楼主加油,我也在学,但是很难坚持下来的感觉到啊

13613105079 发表于 2022-1-4 00:32

谢谢分享

huqiang19870721 发表于 2022-1-4 09:59

分享个教程呗,也在学习中

XU-666 发表于 2022-1-21 15:42

楼主怎么好久没有更新了

xmqy 发表于 2022-3-23 13:19

楼主加油

htao0310 发表于 2022-3-28 23:13

不错,要一直坚持下去
页: [1]
查看完整版本: Java自学记录Day27