知识点梳理:
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(最安全)
接口是稳定的,不变的,抽象的.
若有不完善的地方请大家多提意见,转发时请注明出处!