java类的继承,多态,抽象类与接口
知识点梳理:
1,怎样定义自己的类.
MyStarFrame,MyStarPanel
类中定义:
(1)属性(数据),变量.
(2)方法(函数),行为.
(3)构造方法(特征,作用,何时被调用,构造方法怎么写).
2,继承自已经存在的类.(API,自己写的).
写继承:
public class A extends B{
/**方法的覆盖,重写
* 父类中有同名同参的方法.
*/
public void paint(){
}
/**扩展的新方法
*/
public void panit(Graphics g){
}
}
A a = new A();
代码复用.
this:当前对象
super:父类对象
class A{
private int abc;
public void m1(){
this.abc=10;
}
}
...
A a = new A();
a.m1();
A b = new A();
b.m1();
...
===========================================
A->B->C->D
怎么用:
1,线程,内部类,AWT,Swing,...
面向对象:
1,怎么样定义类:属性和方法
2,什么是构造方法
3,怎样生成对象,生成对象的语法和步骤.
4,怎样去继承一个已经存在的类.
5,继承的好处.
6,方法的覆盖.
===========================
继承关系是
A "is a" B
A extends B
关联(聚合):
A "has a" B
访问控制修饰符:
类中的成员:属性和方法
Class A{
public int a;//在任何位置都可访问
protected int b;//包内可见,子类可见
int c; //包内可见
private int d;//只能在本类的内部访问
为对象封装提供语法基础.
===========================
类的基础:
类是封装,类产生了数据的封装.
学生成绩管理:
1,学生科目成绩:int,double
2,科目名称:String
3,学生:
private 学号:String,long
private 姓名:String
private 性别:char
private 年龄:int(-2^31~+2^31-1)
private 班级:String
private 年级:String
private 考试成绩:int
public static int abc;//静态属性
统一的规则来访问,
public 方法:你希望外部访问的
===========
private 方法:你不希望外部访问的,你只是为内部的其他方法提供服务.
人类:\
public void 吃饭(){
1,找地方
2,点菜
3,上菜
4,开吃
5,消化
6,排泄
}
private void 消化(){
}
......
=========================
static:
类的所有成员(属性和方法)分为2种:
static成员=类成员
描述类本身的特征的.
访问时用类名直接访问:
A.abc
A.m1();
在整个程序中只有一份,在类加载时初始化.
非static成员=实例成员=对象成员
描述对象个体的特征的
需要对象名去访问:
A a=new A();
a.def;
a.m2();
有多少个对象就有多少个实例属性,在生成对象时创建.
==================
java ABC
一个JAVA程序运行时过程:
1,启动JVM.
2,加载要运行的类(ABC.class)
3,找类的main函数,并运行main函数
==================================
关于JAVA的继承
1,JAVA是单一继承,每个子类只有一个唯一的父类,整个继承结构是一棵树.
树状结构的根是Object.
2,好处:继承关系简单清晰.
3,缺点:只能从一个父类继承功能.
CAR :move
Weapon :attack
Tank extends CAR implements Weapon
================================
什么是多态?
一个对象多种形态.
继承关系是对象多态的基础.
"Is a"关系
Bird b=new Bird();
Animal a=new Bird();
Object o=new Bird();
基本规则(定理):
1,如果我们把子类对象当作父类对象来看,那么,我们只能访问父类中有定义的属性和方法.不能访问子类扩展的属性和方法.
Animal a=new Bird();
a.move();
a.eat();
a.singSong();//不能访问
Person
JavaTeacher teachingJava()
2,当子类覆盖了父类的方法,如果我们把子类对象当作父类对象来看,去调用该方法,则调用的是子类覆盖之后的方法.
Animal a=new Bird();
a.move();//输出 Flying!
Animal-- eat()
马---eat(){"吃草"}
狮子---eat(){"吃肉"}
Animal a=new Bird();
1,主观认为 客观存在
2,编译时类型 运行时类型
编译时类型:编译器把a当什么看
运行时类型:JVM把a当什么看
a.singSong();//
==============================
抽象和接口
具体的类,描述具体事物的.
动物:抽象类,方法无法实现的(抽象的)
=================================
抽象类与接口
即时战略游戏:星际争霸,帝国时代,...
不同的兵种,进攻
坦克兵
机枪兵
战斗机
.....
public abstract class Person{
... ....
public abstract void attack();
}
public class Tank extends Person{
public void attack(){
发射炮弹
}
}
public class Flighter extends Person{
public void attack(){
发射导弹
}
}
Person[] army=new Person[10];
army[0]=new Tank();
army[1]=new Flighter();
army[3]=....
... ...
for(int i=0;i<army.length;i++){
army[i].attack();
}
==============================
接口:特殊的抽象类
1,接口中所有方法都是抽象方法.
2,接口没有实例属性,所有属性都是static final
3,接口没有构造方法
4,一个类可以同时实现多个接口
为什么要使用接口?
1,对单一继承结构的补充.
2,接口丰富了对象的多态.
3,面向接口的编程(编程或架构的思想)
软件开发追求的目标:
一个中心,两个基本点.
一切以用户需求为中心,
保证软件具有良好的可扩展和可维护性
高内聚,低耦合的
内聚力:软件系统独立完成某项工作的能力,不需要,只需要外部少量的参与.
汽车:
手动档-->自动档汽车-->无人驾驶
5 3 1
耦合度:模块与模块,类与类之间关联关系的复杂度.
A->B->C->D->E(最安全)
接口是稳定的,不变的,抽象的.
若有不完善的地方请大家多提意见,转发时请注明出处!
java类的继承,多态,抽象类与接口的更多相关文章
- 第二十八节:Java基础-进阶继承,抽象类,接口
前言 Java基础-进阶继承,抽象类,接口 进阶继承 class Stu { int age = 1; } class Stuo extends Stu { int agee = 2; } class ...
- java类与对象基础--抽象类和接口
在java的类体系中,有两个比较特殊的抽象体--抽象类和接口.抽象体并不可以拥有具体的对象(而且接口甚至不是类),但是它们却是在java设计领域非常重要的两个概念,很多优秀的设计模式都是基于这两个概念 ...
- Java 对象的继承,抽象类,接口
子父级继承 关键字 extends 首先创建一个父类 class Fu { String name; int a=1; public void word() { System.out.println( ...
- JAVA基础第三章-类与对象、抽象类、接口
业内经常说的一句话是不要重复造轮子,但是有时候,只有自己造一个轮子了,才会深刻明白什么样的轮子适合山路,什么样的轮子适合平地! 我将会持续更新java基础知识,欢迎关注. 往期章节: JAVA基础第一 ...
- Java入门系列之类继承、抽象类、接口(五)
前言 C#和Java关于类.抽象类.接口使用方式基本相似,只是对应关键字使用不同罢了,本节呢,我们只是对照C#和Java中关于这三个概念在具体使用时,看看有哪些不一样的地方. 类继承 C#和Java在 ...
- 【JAVA零基础入门系列】Day13 Java类的继承与多态
继承是类的一个很重要的特性,什么?你连继承都不知道?你是想气死爸爸好继承爸爸的遗产吗?(滑稽) 开个玩笑,这里的继承跟我们现实生活的中继承还是有很大区别的,一个类可以继承另一个类,继承的内容包括属性跟 ...
- 《Java技术》第三次作业--面向对象——继承、抽象类、接口
1.阅读下面程序,分析是否能编译通过?如果不能,说明原因.应该如何修改?程序的运行结果是什么?为什么子类的构造方法在运行之前,必须调用父 类的构造方法?能不能反过来? class Grandparen ...
- Java基础系列4:抽象类与接口的前世今生
该系列博文会告诉你如何从入门到进阶,一步步地学习Java基础知识,并上手进行实战,接着了解每个Java知识点背后的实现原理,更完整地了解整个Java技术体系,形成自己的知识框架. 1.抽象类: 当编写 ...
- java类的继承
继承就是在一个现有类型的基础上,通过增加新的方法或者重定义已有方法(重写)的方式,产生一个新的类型.继承是面向对 象的三个基本特征--封装.继承.多态的其中之一,我们在使用java时编写的每一个类都是 ...
- java类的继承的一些细节
类的继承是java面向对象体系的一个重要方面(封装.继承.多态),对于java类的继承,需要注意如下细节. 1.构造函数. 如果一个类没有任何构造函数,系统会默认分配一个无参的构造函数给它,这个构造函 ...
随机推荐
- Spring+SpringMVC+MyBatis深入学习及搭建(十五)——SpringMVC注解开发(基础篇)
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/7065294.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(十四)--S ...
- if和for的几个经典题目
1.有一对幼兔,幼兔1个月后长成小兔,小兔1个月后长成成兔并生下一对幼兔,问几年后有多少对兔子,幼兔.小兔.成兔对数分别是多少. 幼兔 1 小兔 0 成兔 0幼兔 0 小兔 1 成兔 0 幼兔 1 小 ...
- FFT/NTT 多项式学习笔记
FFT(快速傅立叶变换)和NTT(快速数论变换)看上去很高端,真正搞懂了就很simple了辣. 首先给出多项式的一些定义(初中数学内容): 形如Σaixi的式子就是多项式! 多项式中每个单项式叫做多项 ...
- H5仿微信界面教程(一)
前言 先来张图,仿微信界面,界面如下,并不完全一模一样,只能说有些类似,希望大家见谅. 1 用到的知识点 jQuery WeUI 是WeUI的一个jQuery实现版本,除了实现了官方插件之外,它还提供 ...
- vue.js实现内部自定义指令和全局自定义指令------directive
在Vue中,我们平时数据驱动视图时候,内部自带的指令有时候解决不了一些需求,这时候,Vue给我们一个很好用的东东 directive 这个单词是我们写自定义指令的关键字哦 之定义指令为我们提供了几个钩 ...
- java基础之集合框架(1)
一.介绍Collection 1.概念:Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements).一些Collection ...
- Java编程代码性能优化总结
如果有足够的时间开发.维护代码,这时候就必须考虑每个可以优化的细节了,一个一个细小的优化点累积起来,对于代码的运行效率绝对是有提升的. 代码优化的目标是: 1.减小代码的体积 2.提高代码运行的效率 ...
- 使用vue+flask做全栈开发的全过程(实现前后端分离)
花了几天的时间终于在本地把前后端跑通了,以一篇博客记录我这几天的心酸... 1.安装nodejs(自带npm,可能会出现版本错误,更新npm) 2.npm在国内下载时,可能会慢,所以建议要安装淘宝镜像 ...
- MongoDB 安装和配置
[前言] Mongodb是一款nosql数据库,关于nosql 以及 mongodb本文不进行介绍,在数据库的选型方面,本人说是在机缘巧合之下选择了mongodb,并且拟使用mongodb搭建日志系统 ...
- FreeRTOS——资源管理
1. 多任务系统存在一个潜在的风险:资源管理. 2. 基本临界区:taskENTER_CRITICAL() 与 taskEXIT_CRITICAL() 或 taskENTER_CRITICAL_FRO ...