java基础(十四)
2021/10/16 17:11:50
本文主要是介绍java基础(十四),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录
一:概述
二:抽象类的特点
1:抽象类和抽象方法必须用abstract关键字修饰
2:抽象类不一定有抽象方法,有抽象方法的类一定是抽象类。
3:抽象类的子类 要么是抽象类 要么重写抽象类中的所有抽象方法。
三:抽象类的成员特点
1:成员变量
2:构造方法
3:那么,构造方法的作用是什么呢?
4:成员方法
5:抽象类的抽象方法和非抽象方法
6:一个类如果没有抽象方法,可不可以定义为抽象类?如果可以,有什么意义?
四:例子
一:概述
在Java中,一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象类。
二:抽象类的特点
1:抽象类和抽象方法必须用abstract关键字修饰
格式 abstract class 类名 {}
public abstract void eat();
2:抽象类不一定有抽象方法,有抽象方法的类一定是抽象类。
抽象类不能实例化 那么,抽象类如何实例化呢?
按照多态的方式,由具体的子类实例化。其实这也是多态的一种,抽象类多态。
3:抽象类的子类 要么是抽象类 要么重写抽象类中的所有抽象方法。
三:抽象类的成员特点
1:成员变量
可以是变量 也可以是常量
2:构造方法
有构造方法,但是不能实例化
3:那么,构造方法的作用是什么呢?
对现实中一些抽象事物的描述
用于子类访问父类数据的初始化
4:成员方法
可以有抽象方法 限定子类必须完成某些动作 也可以有非抽象方法 提高代码服用性,子类可以有非抽象化方法,不过调用时要转化。(向下转型)
5:抽象类的抽象方法和非抽象方法
抽象类的抽象方法:用于限定子类必须完成某些动作 抽象类的
非抽象方法:用于提高代码的服用性
6:一个类如果没有抽象方法,可不可以定义为抽象类?如果可以,有什么意义?
可以,为了描述一些生活中一些抽象的事物
四:例子
package Proctice2; /*猫狗案例 具体事物:猫,狗 共性:姓名,年龄,吃饭 */ abstract class Animal{ private int age;//成员变量 private String name;//成员变量 public abstract void eat();//动物类的抽象方法 public void run(){ System.out.println("动物喜欢跑");//动物类的非抽象方法 } public Animal() {//无参构造 } public Animal(int age, String name) {//有参构造 this.age = age; this.name = name; } public int getAge() {//get方法 return age; } public void setAge(int age) {//set方法 this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public void show(){ System.out.println(getName()+"**"+getAge()); } } class Cat extends Animal{ public Cat() {//无参构造 } public Cat(int age, String name) {//有参构造 super(age, name);//引用父类的成员变量 super.run();//使用父类的非抽象方法 super.show();//父类的非抽象方法 } @Override public void eat() {//重写父类的方法 System.out.println("猫喜欢吃鱼"); } public void clim(){//自己的成员方法 System.out.println("猫会爬树"); } } class Dog extends Animal{ public Dog() {//无参构造 } public Dog(int age, String name) {//有参构造 super(age, name);//引用父类的成员变量 super.run();//使用父类的非抽象方法 super.show();//父类的非抽象方法 } @Override public void eat() {//重写父类的成员方法 System.out.println("狗喜欢吃肉"); } public void watch(){//自己的成员方法 System.out.println("狗会看门"); } } public class Text11 { public static void main(String[] args) { Animal c=new Cat(2,"小花");//调用有参构造 c.eat();//调用重写的成员方法 Cat c1=(Cat) c;//向下转型 c1.clim();//调用特有的成员方法 Animal d= new Dog(3,"小黄");//调用有参构造 d.eat();//调用重写的成员方法 Dog d1=(Dog) d;//向下转型 d1.watch();//调用特有的成员方法 } }
这篇关于java基础(十四)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-12百万架构师第十五课:源码分析:Spring 源码分析:SpringMVC核心原理及源码分析|JavaGuide
- 2025-01-11有哪些好用的家政团队管理工具?
- 2025-01-11营销人必看的GTM五个指标
- 2025-01-11办公软件在直播电商前期筹划中的应用与推荐
- 2025-01-11提升组织效率:上级管理者如何优化跨部门任务分配
- 2025-01-11酒店精细化运营背后的协同工具支持
- 2025-01-11跨境电商选品全攻略:工具使用、市场数据与选品策略
- 2025-01-11数据驱动酒店管理:在线工具的核心价值解析
- 2025-01-11cursor试用出现:Too many free trial accounts used on this machine 的解决方法
- 2025-01-11百万架构师第十四课:源码分析:Spring 源码分析:深入分析IOC那些鲜为人知的细节|JavaGuide