package edu.ffyc.day;
import java.io.Serializable;
/*
抽象类:被abstract关键字所修饰的类,里面可能会包含抽象方法。
当类中没有足够信息来描绘一个对象时,会用抽象类;
抽象类除了不可被创建对象外,类的其它功能都正常;
若类中有抽象方法,则此类必须定义成抽象类,但抽象类中可以没有抽象方法;
抽象类一般位于类结构上层,用来定义有哪些功能;
静态方法不能被修饰为抽象方法,因为静态方法不能被重写;
一个类中可以定义多个抽象方法;
*/
public abstract class day8 {
private String name;
private int age;
public abstract void character();
public abstract void attribute();
}
/*
当一个类继承抽象类后;
要么将此类声明为抽象类;
要么重写父类的抽象方法;
*/
/*
多态--多种状态
同一个父类, 表示不同的子类对象,状态就不同了;
父类引用指向子类对象,两类必须是继承关系;
注意事项:
注意成员调用时,分别为编译期间和运行期间;
编译期间:
运行代码时:实际调用的的是子类中重写的方法;
对于非静态成员方法:
编译看左边,运行看右边;
对于静态成员方法,成员变量:
编译和运行都看左边;
*/
/*
final关键字可以修饰类,方法,参数,成员变量;
final不能修饰抽象类和接口,因为final修饰的类不可被继承;
final修饰方法的参数,在方法内部就不能修改参数值;
*/
class demo{
static final int num=10;
//在编码时,值就确定了,就直接进行赋值,且设为静态final变量,以免占用空间;
final int count;
//每个对象中有一个常量,则用final修饰且必须用构造方法初始化,一旦赋值就不可改变;
demo(int count) {
this.count = count;
}
public final void test(final int a){
//a=10; a被final修饰,在方法里被赋值会报错;
System.out.println(a);
}
public static void main(String[] args) {
demo de=new demo(15);
de.test(20);
de.test(30);
//de.num=40; final修饰的变量不可修改;
}
/*
接口:
是一种更为彻底的抽象,主要来定义功能
jdk8之后的接口可以定义4种内容:
1.静态常量
2.抽象方法
3.静态方法
4.默认方法
接口中定义静态方法,通过接口名直接访问
*/
}
interface Myinterface{
int height=20;
static int weight=30;
public void speak();
}
/*public class MyinterfaceImpl implements Myinterface{
public void speak(){
System.out.println(
);
}
}*/
java面向对象(4)
最新推荐文章于 2024-09-21 10:38:43 发布