JAVA基础(9.面向对象:继承、抽象、方法重写)

目录

1.相关概念

继承:

抽象:

2.继承

2.1 继承的引入

2.2继承作用

2.3 Java中类继承的基本语法(重点)

2.3 子类可以从父类继承哪些成员?

2.4 Java中类的继承特点(重点)

3.方法覆写(重写/Override)(掌握)

3.1 方法覆写

3.1.1方法覆写的引入(为什么需要覆写方法)

3.1.2 方法覆写作用:

3.1.3 方法覆写语法:

3.1.4 方法覆写注意事项:

3.2.super 关键字

4 抽象类和抽象方法(重点)

4.1抽象方法的引入

4.2抽象类【掌握】

5. Object类(及方法覆写的应用)(重点、难点)

5.1 Object类引入

5.2 Object类中方法【掌握】

5.3 toString方法(掌握)

5.4 equals(掌握)

5.5 == 和 equals区别


1.相关概念

继承:

继承面向对象最显著的一个特性。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。 [1]

Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。

这种技术使得复用以前的代码非常容易,能够大大缩短开发周期,降低开发费用。比如可以先定义一个类叫车,车有以下属性:车体大小,颜色,方向盘,轮胎,而又由车这个类派生出轿车和卡车两个类,为轿车添加一个小后备箱,而为卡车添加一个大货箱。

抽象:

Java语言中,用abstract 关键字来修饰一个类时,这个类叫作抽象类。抽象类是它的所有子类的公共属性的集合,是包含一个或多个抽象方法的类。抽象类可以看作是对类的进一步抽象。在面向对象领域,抽象类主要用来进行类型隐藏。

2.继承

2.1 继承的引入

三个类都有重复的代码,可以把这共同的代码抽出去,抽出去放到另外一个类里面;下面的3个类和上面的类需要发生一点关系(继承),上面的类叫做 父类(超类,基类,根类),下面的类叫子类(派生类,拓展类);

好处 : 提高了代码的复用性

2.2继承作用

代码复用,提高开发效率和程序的扩展性。

2.3 Java中类继承的基本语法(重点)

① Java类中的继承的语法格式:

class A{}

class B extends A{}

A 就是B的父类基类、根类、超类

B是A的子类、派生类、拓展类

② 验证:子类中是否可以继承到父类中的东西(通过创建子类对象来操作从父类继承的东西)

 

//案例代码:
//父类:
public class Animal {
	String name;
	int age;
	public void eat() {
		System.out.println("吃");
	}
}
子类:
public class Person extends Animal{
	/**
	 * 人类独有方法
	 */
	public void coding() {
		System.out.println("敲代码...");
	}
}

public class Pig extends Animal{
	/**
	 * 猪类独有方法
	 */
	public void gongBaiCai() {
		System.out.println("拱白菜...");
	}
}
public class Bird extends Animal{
	/**
	 * 鸟类独有方法
	 */
	public void fly() {
		System.out.println("飞...");
	}
}

//测试类:
/**
 *	继承测试类
 */
public class AnimalTest {

	public static void main(String[] args) {
		//创建子类对象
		Person person = new Person();
		
		Pig pig = new Pig();
		
		//通过子类对象调用父类继承过来的成员
		person.age = 1;
		person.eat();
		System.out.println(person.name);
		System.out.println(person.age);
		//调用子类特有方法
		person.coding();
		
		pig.name = "佩奇";
		pig.age = 7;
		pig.eat();
		System.out.println(pig.name);
		System.out.println(pig.age);
		//调用子类特有方法
		pig.gongBaiCai();
	}
}

2.3 子类可以从父类继承哪些成员?

除了构造方法不能被继承其他都可以继承过来

但是,私有化成员不能直接通过子类对象直接访问,但是可以通过继承过来的公共方法间接访问

代码如下:

public class Animal {
	String str;
	private int a;
	static int b;
	public Animal() {
		System.out.println("无参构造...");
	}
	public Animal(int a) {
		System.out.println("有参构造...");
	}
	public void test() {
		System.out.println("普通方法");
	}
	public static void testStatic() {
		System.out.println("静态方法..");
	}	
	private void testPrivate() {
		System.out.println("私有化方法..");
	}
	public int getA() {
		return a;
	}
	public void setA(int a) {
		this.a = a;
	}
}

public class Person extends Animal{
	/**
	 * 人类独有方法
	 */
	public void coding() {
		System.out.println("敲代码...");
	}
}

//测试代码:
/**
 *	测试继承哪些成员
 */
public class AnimalTest {

	public static void main(String[] args) {
		//创建子类对象
		Person person = new Person();
		
		//通过子类对象调用父类继承过来的普通成员变量
		person.str = "张三";
		
		//通过子类对象调用父类继承过来的私有化成员变量
//		person.a = 1;//不能通过子类对象直接调用父类私有化成员
		
		//通过子类对象调用父类继承过来的静态成员变量
//		person.b = 2;//不要这样用。 这里编译的时候,会将person对象直接编译为类名的方式
		
		//通过子类对象调用父类继承过来的普通方法
		person.test();
		
		//通过子类对象调用父类继承过来的静态方法
//		person.testStatic();//不要这样用。 这里编译的时候,会将person对象直接编译为类名的方式
		
		//通过子类对象调用父类继承过来的私有化方法
//		person.testPrivate();//不能直接调用私有化方法
		
		//子类调用可以通过父类公共方法间接调用父类中私有化的成员
		person.setA(69);
		
		int a = person.getA();
		System.out.println(a);//69
		
		//调用Object继承过来的方法
		int hashCode = person.hashCode();
		System.out.println(hashCode);
	}

}

2.4 Java

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
1关:继承方法重写 继承面向对象编程中的一种重要的概念,它允许我们创建一个新类,从现有的类中继承属性和方法。子类可以继承父类中的公共方法和属性,并且可以重写父类中的方法来实现自己的功能。 方法重写是指子类重写父类中已经存在的方法。子类可以根据自己的需要重新定义一个父类中的方法,使其具有不同的行为。在子类中重写方法时,方法名、参数列表、返回类型必须与父类中被重写的方法完全相同。 例如,我们创建一个父类Animal和一个子类Dog,子类Dog继承了父类Animal中的属性和方法,并且重写了其中的方法: ```java public class Animal { private String name; public Animal(String name) { this.name = name; } public void eat() { System.out.println(name + " is eating."); } } public class Dog extends Animal { public Dog(String name) { super(name); } @Override public void eat() { System.out.println("The dog is eating bones."); } } ``` 在上面的例子中,我们定义了一个Animal类,它有一个属性name和一个方法eat,然后我们创建了一个Dog类,它继承了Animal类,并且重写了eat方法。在Dog类中的eat方法中,我们打印出了一条狗在吃骨头的语句。 2关:抽象类 抽象类是一种特殊的类,它不能被实例化,只能被继承抽象类中可以包含抽象方法和具体方法。抽象方法是一种没有实现的方法,它只有方法的声明,没有方法体,而具体方法则是有实现的方法。 抽象类通常用于定义一些抽象的概念,它可以被子类继承并实现。抽象类不能被实例化,只能被用作父类。 例如,我们可以定义一个抽象类Animal,其中包含一个抽象方法eat: ```java public abstract class Animal { private String name; public Animal(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } public abstract void eat(); } ``` 在上面的例子中,我们定义了一个抽象类Animal,其中包含了一个抽象方法eat,它没有方法体,只有方法的声明。这个抽象类不能被实例化,只能被继承。 3关:接口及实现类定义 接口是一种规范或者一种约定,它定义了一个类应该做什么,但并不规定类应该怎么做。接口中只包含方法的声明,没有方法的实现,它是一种纯粹的抽象概念。 实现类是实现接口的类,它们必须实现接口中的所有方法。实现类可以实现多个接口,这样就可以同时具有多种功能。 例如,我们可以定义一个接口Animal,其中包含一个方法eat: ```java public interface Animal { void eat(); } ``` 在上面的例子中,我们定义了一个Animal接口,其中只包含一个方法eat,没有方法的实现。这个接口可以被其他类实现。 然后我们可以创建一个实现类Dog,它实现了Animal接口: ```java public class Dog implements Animal { @Override public void eat() { System.out.println("The dog is eating bones."); } } ``` 在上面的例子中,我们创建了一个实现类Dog,它实现了Animal接口中的eat方法,并且实现了自己的功能,即打印出一条狗在吃骨头的语句。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值