(JavaSE)十、面向对象三大特征-----继承

继承

        继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。

        继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为,是一种“is a”的关系,即子类是对父类的拓展,是一种特殊的父类,比如:狗是动物的一种特殊情况,狗属于动物。

                                 


extends关键字:

        实现继承的关键字,java中是单一继承,正如一个人只有一个亲生父母,所以extends 后只能继承一个类

        也就是说一个类A,只能有一个直接的父类,不能出现类A同时继承于类B和类C, 但是,Java中允许多重继承.

 多重继承例子:

        动物有胎生动物和卵生动物之分,胎生动物有老虎,老虎又分华南虎,东北虎,孟加拉虎等。

格式:

                public  class  子类类名    extends    父类类名

                {

                         编写自己特有的状态和行为

                }


子类到底继承了父类的哪些成员(根据访问修饰符来判断):

      1):如果父类中的成员使用public修饰,子类继承.

      2):如果父类中的成员使用protected修饰,子类也继承,即使父类和子类不在同一个包中.

      3):如果父类和子类在同一个包中,此时子类可以继承父类中 缺省修饰符的成员.

      4):如果父类中的成员使用private修饰,子类无论如何都继承不到.因为private只能在本类中访问.

      5):父类的构造器,子类也不能继承,因为构造器必须和当前的类名相同.

举个例子:

package Test;

import java.util.Arrays;

/**
 * 
 * @author FYDragon
 *
 */

class Animal {
	private String name;
	private int age;

	
	
	public Animal(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}

	public void eat() {
		System.out.println(this.name+"正在吃");
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}
	

}

class Dog extends Animal {
	private String name;
	private int age;
	private String kind;

	public Dog(String name, int age,String kind) {
		super(name,age);
		this.kind = kind;
	}
	
	public void eat(){
		System.out.println("我叫"+super.getName()+",今年"+super.getAge()+"岁啦,我在吃骨头");
	}
	public void say(){
		System.out.println("我是一只"+this.kind);
	}

}

public class TestDemo {
	public static void main(String[] args) {
		Dog dog = new Dog("来福", 2,"哈士奇");
		dog.eat();
		dog.say();
		
	}
}

分析:animal是父类,父类中定义了名字年龄两个私有变量、构造方法和定义的方法,Dog类是子类,定义了两个私有的属性和一个种类属性,但是Dog类的构造方法中,name 和 age 是super(调用父类)的私有变量,所以在使用的时候,需要调用get和set方法来进行使用,结果如下。


SuperThis关键字:

        super关键字:我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。

        this关键字:指向自己的引用。

注意:

      (1)在创建子类对象之前,会先创建父类对象.

              调用子类构造器之前,在子类构造器中会先调用父类的构造器,(默认调用的是父类无参数构造器)

      (2) 如果父类不存在可以被子类访问的构造器,则不能存在子类.

      (3)如果父类没有提供无参数构造器,此时子类必须显示通过super语句去调用父类带参数的构造器.


super关键字的使用场景:

        (1)可以使用super解决子类隐藏了父类的字段情况.该情况,我们一般不讨论,因为破坏封装.

        (2)在子类方法中,调用父类被覆盖的方法,引出super的例子,此时必须使用super.

        (3)在子类构造器中,调用父类构造器,此时必须使用super语句:super([实参]).


什么是this:

        表示当前对象,什么优势当前对象.

this主要存在于两个位置:

        构造器中:  就表示当前创建的对象.

        方法中:  哪一个对象调用this所在的方法,那么此时this就表示哪一个对象.

使用this:

        (1)解决成员变量和参数(局部变量)之间的二义性,必须使用;

        (2)同类中实例方法间互调(此时可以省略this,但是不建议省略)。

        (3)将this作为参数传递给另一个方法;

        (4)将this作为方法的返回值(链式方法编程);

        (5)构造器重载的互调,this([参数])必须写在构造方法第一行;

        (6)static不能和this一起使用;

因此我们就引出了static关键字。


static关键字:

    修饰属性:

            这个属性,就不是对象的属性了。属于类的属性。(是共有的资源)

            任何对象都可访问。

            静态属性存在方法区中,只有一份。

    修饰方法:

            方法也是被加载到方法区内的,也是属于类的方法,不是对象的。

            建议:使用类名进行调用

            不能直接访问非静态的属性和非静态的方法。

    修饰代码块:

            static{

                   代码内容    

            }

        修饰的代码块,只执行一次,在加载期间。执行时间在创建对象之前。一般用来假加载静态资源。



final
关键字:

    修饰属性:

            只能声明时赋值,或者在构造器中赋值

            不能再重新被赋值(只能赋一次值)

    修饰方法:

            使用final修饰的方法不能被子类重写。

            为避免子类不经意间重写了这个方法,用final修饰。

    修饰类:

            不能被继承,不能存在子类。

            String类型就是final修饰的类。




















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
面向对象编程是一种编程范式,它将程序的构建和设计思路以面向对象的方式进行组织和实现。在Java中,面向对象编程是基于Java SE(Standard Edition)的一种编程方式。第07讲主要介绍了面向对象编程中的一些基本概念和关键术语。 在面向对象编程中,我们将程序中的数据和对数据的操作(方法)封装在一起,形成一个对象。对象由两部分构成:属性和方法。属性是用来描述对象的特征,而方法则是对象可以执行的操作。对象之间通过消息(方法调用)进行通信和交互。面向对象的核心思想是通过封装、继承和多态实现程序的复用和扩展。 封装是面向对象编程中的一个重要概念,它指的是将的属性和方法进行封装,使得外部无法直接访问和修改对象的内部状态,只能通过公共的方法来操作属性和执行方法。封装提供了一种将数据和行为组合在一起的方式,可以保护数据的完整性和安全性。 继承面向对象编程中的另一个重要概念,它指的是通过定义一个新的继承现有的属性和方法。通过继承,子可以继承的属性和方法,并可以在此基础上进行扩展和修改。继承提供了一种代码复用的机制,可以减少重复编码的工作量。 多态是面向对象编程的又一个重要概念,它指的是同一类型的对象在不同的情况下可以有不同的表现形式。多态通过方法的重写和方法的重载实现。方法的重写指的是在子类中重新定义和实现父方法方法的重载指的是在同一个类中可以定义多个同名但参数列表不同的方法。 总结来说,面向对象编程是一种将程序组织和设计思路以对象为中心的编程方式。在JavaSE中,我们可以通过封装、继承和多态来实现面向对象编程的目标。封装可以提高程序的可维护性和可复用性,继承可以减少重复编码的工作量,多态可以灵活地操作对象。掌握这些基本概念和关键术语,可以帮助我们更好地理解和应用面向对象编程的思想。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值