java课时五_面向对象(2)

关注如下代码段的注释

public class TestA{
int x;//对象数据成员,对象的组成部分,生命周期同对象
static int y;//类的数据成员,生命周期同类,可以理解为所有对象共用同一份
void f(){
};//对象方法,方法中若有this,指向对象
static void g(){
};//属于类方法(不属于对象),不可以使用this
}

void f(){
this.x=30;
x=40;
this.y=30;
TestA.y=30;
y=70;
}//对象方法可以使用类的一切成员
void g(){
TestA ta=new TestA();
ta.x=30;//不可以直接访问x,只能间接访问
g();
y=40;//可以直接访问static成员
}
public static void main(String []args){};//main也是static,不可以直接访问非static成员

包的概念及package语句

A、每一个类应该属于一个包:
包的定义:

package 包名;//必须是第一条语句,且仅有一条
//如:
package cn.edu.njnu.java

包名规则:
1、全小写
2、全球唯一,使用域名

B、import语句:

import java.lang*;//在java中这个包会自动包含
import static java.lang.Math;//静态包含,包含Math里所有静态成员

继承

关注如下代码段的注释

public class Point{
	int x;
	int y;
...
}
public class Point3D extends Point{
	int z;
	public Point3D(int x,int y,int z){
		super(x,y);//调用父类构造器
		this.z=z;
	}
	int x;//此时父类与自己都有x
	public void fun(int x){
		super.x=this.x+x;//super.x指父类x,this.x指自己的x,x指参数x
		//若参数不是x,那么x指this.x
	}
}

现在有三个类:
class A:private int x
class B:private int y
class C
C继承于B,B继承于A
此时:C中有x,y但是不能访问

方法的重写

java中方法的重写:
1、只针对对象的方法(非static方法,static方法只有隐藏与重载)。
2、方法名与参数列表与父类的相同
3、返回值相同或相容
A、java开发的六大原则(重点在前两个)
1、开-闭原则:对继承开放,对修改关闭。
2、LSP原则(里氏代换原则):子类对象可以无缝代替父类对象

如:

Point p1=Point3D();//Point是定义类型,Point3D是运行类型

3、DIP原则(依赖倒换原则):设计要依赖抽象而不是具体化
4、ISP原则(界面分离原则):将大的接口打散成多个小接口
5、CARP原则(复合/聚合复用原则):设计者应当先考虑复合/聚合,而不是继承。
6、LKP原则(最少知识原则):一个对象应该尽可能少的去了解其他对象
例:对任何几何图形求面积
方法一:

double Area(Graph X){
	if(X==)
		...;
	if(X==...)
		...;
	.
	.
	.
	
}

若想增加新图形,则必须修改源代码(违背开发开-闭原则)
方法二:

public class Tools{
	public static double calArea(Graphix g)
		return g.area();//类方法
	public static void main(String []args){
		Circle g=new Circle();
		Tools.calArea(g);//可以直接使用类方法
	}
}
public abstract class Graphix{//抽象类
	public abstract double area();//抽象方法,求图形面积,所以要在子类中实现
}
public class Circle extends Graphix{
	public double area()
		return ...;//面积计算方法
}

1、抽象类不可以实例化
2、被子类重写过的方法才叫子类的,其余为父类的

访问控制

public class Tc{
public int x;//所有类可以访问
protected int y;//子类或者同一个包(不是子类)可以访问
int z;//同一个包可以访问
private int w;//本类(本类的对象之间可以访问)自身
}

一个文件中只能有一个public class

猜你喜欢

转载自blog.csdn.net/NiZjiTouA/article/details/94385634
今日推荐