##interface接口:##
接口是一种能力和约定,规定了类必须实现的行为
interface不是类,所以无法创建对象,也就没有构造、代码块
###具体用法:###
1、创建一个接口:interface 接口名{}
2、接口的实现: 类名后+implements+接口名
###interface与多态区别:###
多态关注的是类型,接口关注的是行为、能力,表现为做参数时比多态范围更宽泛、自然
##final最终的:##
修饰类:表示最终类,本类将不能被继承,用于防止被修改,引用类型属性可改变,地址无法被改变
修饰方法:表示最终方法,不能被重写
修饰属性:值被初始化后将不能被修改,称为常量
常量:全字母大写,使用前就必须初始化
##以下是今天的习题##
一、
public class Testmain {
public static void main(String[] args) {
MyClass nc = new MyClass();
System.out.println(nc.value);
}
}
class MyClass{
final int value;
public MyClass(){
value = 10;
}
public MyClass(int value) {
this.value = value;
}
}
二、
public class TestMain {
public static void main(String[] args) {
MyClass mc = new MyClass();
int value = 5;
final int fvalue = 10;
mc.printValue(value);
mc.printValue(fvalue);
mc.changeVAlue(value);
mc.changeVAlue(fvalue);
}
}
class MyClass{
public void printValue(final int value) {
System.out.println(value);
}
public void changeVAlue(int value) {
value = value*2;
System.out.println(value);
}
}
三、
public class TestFainl {
public static void main(String[] args) {
final MyValue mv = new MyValue();
mv.value = 100;
mv.value = 200;
// mv = new MyValue; 编译不通过 finak修饰的引用类型地址固定不能改变
System.out.println(mv.value);
}
}
class MyValue{
int value;
}
四、
public class TestMain {
public static void main(String[] args) {
Sub s = new Sub();
s.m1();
s.m1(10);
s.m1(1.5);
}
}
class Super{
public final void m1() {
System.out.println(“mi in Super”);
}
}
class Sub extends Super{
public void m1(int i ) {
System.out.println(“m1(int i) in Sub”);
}
public void m1(double d) {
System.out.println(“m1(double d) in Sub”);
}
}
五、
public class TestInterface {
public static void main(String[] args) {
IA ia = new MyClass();
ia.m1();
System.out.println(IA.a);
}
}
interface IA{
void m1();
int a = 100;
}
class MyClass implements IA{
public void m1() {}
}
六、
interface IA{
void m1();
void m2();
}
class MyClassA implements IA{
public void m1() {}
public void m2() {}
}
class MyClassB extends MyClassA{
{}
}