静态方法
静态方法属于类所有,与对象无关,通常不会因为对象不同而改变方法的功能算法,静态方法必须使用static关键字修饰;静态方法也被称为功能函数。
静态方法中只能访问静态属性和调用静态方法而不能直接访问实例属性和调用实例方法;this关键字不能出现在方法中
package com.xzit.util;
/**
* 实现对面积计算管理
* @author Administrator
*
*/
public class AreaProvider {
/**
* 定义静态方法实现三角形面积的计算
* @param h 高
* @param d 底
* @return double 面积结果
*/
public int sum;
public static double countArea(double h,double d) {
// System.out.println(sum);静态方法中不能使用this关键字,不能访问实例属性
// show();静态方法中不能访问实例方法
return h*d;
}
private void show() {
}
}
package com.xzit.test;
import com.xzit.util.AreaProvider;
public class TestStaticMethod {
public static void main(String[] args) {
double area = AreaProvider.countArea(35,53);//规范使用类名称访问执行静态方法
AreaProvider areaProvider = new AreaProvider();
// areaProvider.countArea(35, 45);//不使用实例访问静态方法
System.out.println(area);
}
}
方法重载
条件
①在用一个类中
②方法名称完全相同
③参数必须有所不同(个数或类型不同)
方法重载时面向对象语言多态的特性;体现同名方法完成类似的功能,业务算法却有所不同。
继承
继承是一个类到另一个类的功能延续,体现功能的复用。
规则
1.一个类可以同时被多个类继承,一父多子
2.一个类只能有一个直接父类,java不支持多继承
3.继承具有传递性,祖父->父亲->儿子->孙子
4.final关键字修饰的类不能被继承
package com.xzit;
/**
父类
*/
public class Computer {
private String name;
public double count(double a,double b) {
return a+b;
}
public Computer(String name){
this.name = name;
}
public String getname(){
return this.name;
}
}
package com.xzit;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Watch extends Computer{
/**
子类
*/
public Computer(String name){
super(name);//子类中的构造器super关键字永远是指向调用父类中的构造器创建父类对象
}
public void dispalyDataTime() {
System.out.println(new SimpleDateFormat("yyy-MM-dd").format(new Date()));
}
}
package com.xzit.test;
import com.xzit.Watch;
public class Test {
public static void main(String[] args) {
Watch watch =new Watch();
System.out.println(watch.count(45.6, 55.4));
System.out.println(watch.getname());
}
}
继承中对象的创建
子类中的构造器super关键字永远是指向调用父类中的构造器创建父类对象
子类中的构造器super关键字永远是指向调用父类中的构造器创建父类对象
继承中资源的限制
上转型对象(实例是子类的,类型是父类的)
默认情况下父类的成员属性和方法都可以被子类继承
私有属性和方法无法在子类中直接访问
构造方法不能被继承
上转型对象不能访问子类中新添加的属性和方法
final修饰的方法不能再子类中被重写
package com.xzit;
public class MobilePhone extends Computer {
public void message(String content) {
System.out.println("通讯内容"+content);
}
}
package com.xzit.test;
import com.xzit.Computer;
import com.xzit.MobilePhone;
public class Test2 {
public static void main(String[] args) {
Computer computer = new MobilePhone();//上转型对象(实例是子类的,类型是父类的)
System.out.println(computer.count(23,56));
MobilePhone mphone = new MobilePhone();
mphone.message("\t你好,我来了");
/**
* 上转型对象可以在需要的时候强制转换为实际的子类类型
*/
((MobilePhone)computer).message("我是你朋友");
}
方法重写
方法重写是java语言多态的特性,必须满足一下条件:
1.在子类中,方法名称与父类方法名称完全相同
2.方法的参数个数和类型完全相同,返回类型完全相同
3.方法的访问修饰符访问级别不低于父类同名方法的访问级别
方法重写限制:
1.final 修饰的父类方法在子类中不能被重写
2.static 修饰的父类方法在子类中不能被重写,只能覆盖
super关键字
super关键字与this关键字都代表对象。super关键字只能在存在继承关系的子类中出现,代表父类对象。
super 关键字出现在子类构造器中表示调用父类构造器
super 关键字出现在子类方法中表示访问父类方法或属性
抽象类
面向对象的核心思想
抽象类的定义及特点
抽象类的继承和创建对象
适配器
对象运行时多态