7.4学习总结

一、权限修饰符

访问修饰符是Java中用来控制类、属性和方法的可见性和访问权限的关键字。访问修饰符有四种:public、protected、default(无修饰符)和private。它们分别表示了不同的访问范围:

public:表示公开的,可以被任何类访问。
protected:表示受保护的,可以被同一个包中的类或者不同包中的子类访问。
default:表示默认的,可以被同一个包中的类访问。
private:表示私有的,只能被本类访问。
我们可以通过以下表来说明访问权限:

 

 

二、关键字

2.1 this关键字

 this关键字(当前对象),可以用来修饰属性,方法,构造器(构造方法)

        2.1.1 this 修饰属性和方法

               this理解为当前对象或当前正在创建的对象;
               在类的方法中,可以使用“this.属性”或“this.方法”调用正在创建的对象的属性和方法,但通常都选择省略“this ."
                特殊的:当属性与构造器或方法形参同名时,用
                "this ."来表明是属性;

        2.1.2this调用构造器(重复的操作)

                格式 this(形参列表)调用本类中指定的其他构造器;
                构造器中不能通过”this(形参列表)"调用自己;
                若一个类中有n个构造器,则最多有n-1个构造器使用了(this(形参列表))来调用本类中的其他构造器;
                规定:"this (形参列表)必须声明在当前构造器首行;
                构造器内部最多只能声明一个"this(形参列表)"来调用其他构造器。

        2.1.3代码演示:
class  Person
{
	private String name;
	private int age;
 
	Person(String name, int age)
	{
        this.name = name;
		this.age = age;
	}
	public boolean compare(Person p)
	{
		return this.age == p.age;
	}
}
class PersonThis
{
	public static void main(String[] args)
	{
		Person p1 = new Person("zhagnsan",24);
		
	}
}

2.2super关键字

         super关键字(父类的),用来调用属性,方法,构造器

           2.2.1super的使用

                可以在子类的方法或构造器中通过super.属性或super .方法的方式显式调用父类中声明的属性或方法;通常习惯省略super;
                特别的:当子类和父类定义了同名的属性时,要想在子类中调用父类的属性,则必须使用super;
                特别的:当子类重写了父类中的方法后,我们想调用父类中被重写的方法时,则必须显式的使用super.方法来调用父类中的方法;

           2.2.2super调用构造器

                可以在子类构造器中显式的使用“super(形参列表)的方式调用父类中声明的指定的构造器;
                super(形参列表)的使用必须声明在子类构造器的首行;
                在类的多个构造器中,至少有一个类的构造器使用了super(形参列表),调用父类的构造器;
                说明:为什么super(形参列表)或this(形参列表)调用语句只能作为构造器中的第一句?
                无论通过哪个构造器,创建子类对象,需要保证先初始化父类目的:当子类继承父类后,继承 父类中所有的属性和方法,因此子类有必要知道父类如何为对象进行初始化;

        2.2.3代码演示:

class Animal {
    private String name;
    private int age;
 
    public Animal() {
 
    }
 
    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public void show() {
        System.out.println(this.name + " " + this.age);
    }
}
 
class Dog extends Animal {
    private String color;
    public Dog() {}
    public Dog(String n, int a, String c) {
        super(n, a); // 调用父类的构造方法
        color = c;
    }
    public void show() {
        System.out.println(color);
        super.show();
    }
}
 
public class AnimalDemo {
    public static void main(String[] args) {
        Dog d = new Dog("沙皮狗", 2, "黄色");
        d.show();
    }
}

2.3 final 关键字

        final(最终的) ,可以修饰类、方法、变量

                inal用来修饰一个类,则此类不可以被其他类所继承(比如:String类、System类、StringBuffer类);
                final用来修饰方法,表明此方法不能被重写;
                final 用来修饰“变量” 此时的变量就称为是一个常量;
                final来修饰属性:可以考虑的赋值位置 ,显式初始化、代码块中赋值、构造器中赋值(多个构造器问题,每个都要进行赋值)
                final修饰局部变量(形参):表明此形参是一个常量,当我们调用此方法时,给常量形参赋一个实参,一旦赋值后,只能使用不能再次修改;
         

2.4 static 关键字

        static(静态的)可以修饰属性、方法、代码块、内部类(主要修饰类的内部结构)

        2.4.1使用static来修饰属性:变量(类变量)

                分类:静态变量Vs 非静态变量(实例变量)
                实例变量:当创建类的多个对象时,每个对象都独立的拥有一套类中的非静态属性;当修改其中一个对象的非静态属性时,不会导致其他对象中同样的属性值的修改;
                静态变量:创建多个对象时,多个对象共享同一个静态变量,当通过某一个对象修改静态变量时,会导致其他对象调用此静态变量是修改过了的;

        2.4.2static修饰方法(静态方法)

                随着类的加载而加载,可以通过“ 类. 静态方法”调用;
                静态方法中只能调用静态的方法和属性;(生命周期不同)
非静态的方法,既可以调用静态的方法和属性也可以调用非静态的方法和属性;
                在静态的方法内,不能使用this 、super 关键字;

2.5 abstract关键字

        abstract(抽象的)可以用来修饰类、方法

        2.5.1 abstract来修饰类(抽象类)

                此类不能实例化;
                抽象类中一定有构造器,便于子类对象实例化时调用;
                开发中,都会提供抽象类的子类让子类对象实例化,完成相关操作;

        2.5.2 abstract修饰方法(抽象方法)

                抽象方法只有方法的声明没有方法体;
                包含抽象方法的类一定是抽象类;反之抽象类中可以没有抽象方法
                若子类没有重写了父类中所有的抽象方法,则此类也是一个抽象类,需要abstract来修饰;

三、继承(extends)

        3.1为什么需要继承:

                  在有写时候类和类之间有相同的属性和方法,继承可以一个子类继承另一个父类的属性和方法,并且可以在子类中添加新的属性和方法或者重写父类的方法,如果没有继承,这些属性和方法每个类都要写,是一件重复而且繁琐的事;

         3.2继承的好处以及特点

              好处:  少写一些共有的代码;提供另外一种形式的分类;代码重用

              特点:子类可以继承父类的属性和方法;也可以拥有自己特有的方法.

              继承是单向的; 一个类只有一个父类; 子类能读取父类的方法与属性,但父类不能读取子类的方法和属性

                3.3继承的语法:
// 定义一个父类
class Parent {
    // 父类的属性和方法
}

// 定义一个子类,使用 extends 关键字继承父类
class Child extends Parent {
    // 子类的属性和方法
}


四、多态

        4.1 什么是多态

           Java的多态是一种实现不同对象对同一消息的不同响应的机制,它可以让一个方法或者一个对象具有多种形态;同一个引用类型,使用不同的实例而执行不同操作。   

         4.2多态实现

            使用多态实现思路;编写父类;编写子类,子类重写父类方法;运行时,使用父类的类型,子类的对象

          4.3多态语法:
// 定义一个父类
class Parent {
    // 定义一个方法
    public void method() {
        // 父类的方法实现
    }
}

// 定义一个子类,使用 extends 关键字继承父类
class Child extends Parent {
    // 重写父类的方法
    @Override
    public void method() {
        // 子类的方法实现
    }
}

// 创建一个父类类型的引用,指向一个子类类型的对象
Parent p = new Child();
// 调用引用的方法,会根据对象的实际类型来执行子类的方法
p.method();

    

  • 12
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值