三大特征(封装、继承、多态)
小知识点:
1.boolean是基本类型,但是不能和其他七种类型相互转化
2.接口类可以为数组元素 ???
3.一个普通类实现接口,就要实现接口中所有的抽象方法
4.在一个类内,静态方法不能直接调用非静态方法
5.通过对象名可以访问静态成员。
6.通过类名不能访问实例成员(不加static修饰的成员)
补充:调用和访问两个概念
访问:不需要创建对象
调用:需要创建对象
1:静态方法只能访问静态-------------这里是访问,不是调用,
2:非静态方法可以访问静态,也可以访问非静态-------------这里也是访问,不是调用
3:静态方法可以通过类名.直接被调用,也可以通过对象来被调用-----这里是调用,不是访问
4:而非静态方法只能通过对象来调用-----这里也是调用,不是访问
7.自定义类时不允许定义如下方法public void toString() { }
8.子类中重写的的访问权限不可以低于父类中的访问权限
9.方法的重载:在同一个类中,出现多个同名方法,参数列表不同,与返回值类型、修饰符无关
10.方法的重写:子类中出现和父类中一模一样的方法(包括返回值类型,方法名,参数列表)11.this代表所在方法当前对象的引用
11.this关键字用于所在方法对当前对象的调用
12.super关键字存在于子类方法中,在子类中默认是访问父类的对象;可以访问父类的属性、函数及构造方法
(pulic>protected>默认>private
)
13.引用类型的变量:类,接口,数组,String。若被final修饰,则引用变量引用不可变(地址),但是引用对象的内容可以改变。
14.抽象类型的方法不可以有方法体。
接口必须单独定义在一个类中吗???
- 接口要被子类实现;抽象类要被子类继承
- 接口中全为公共静态常量;而抽象类中可有不同变量
- 接口中全为抽象方法(只有声明);而抽象类中可有普通方法(可有实现)
- 接口中不可以有构造函数;而抽象类中可以有构造函数
- 接口可以为多实现;而抽象类只能单继承
public class test{
public static void main(String[] args) {
T t=new T();
t.fun1();
t.fun2();
}
}
class T implements t1{
@Override
public void fun1() {
System.out.println("运行fun1");
}
@Override
public void fun2() {
System.out.println("运行fun2");
}
}
public interface t1 {
int a=101;
void fun1();
void fun2();
}
15.多态问题:向上转型和向下转型
class Parent{
void fun1()
{
System.out.println("i am parent!");
}
}
class Son extends Parent{
void fun1() { //重写
System.out.println("i am son");
}
void fun2() {
System.out.println("son!!!");
}
}
public class test{
public static void main(String[] args) {
Parent p1=new Son(); //向上转型(从右往左看)
//父类引用指向子类对象,首先检查父类中是否有该方法;如果有,再去调用子类方法
p1.fun1();
Son p2=(Son)p1; //向下转型,实现子类的独有方法
p2.fun2();
}
}