package day04;
/*
static 静态
修饰成员变量:
修饰方法:
*/
public class Demo09 {
public static void main(String[] args) {
Voter voter1 = new Voter();
voter1.name = "张三"; // 没有static修饰,用 实例名.变量名 来调用
voter1.vote(); // 投票
System.out.println("当前票数:" + Voter.count); // static修饰后,用 类名.变量名 来调用
Voter voter2 = new Voter();
voter2.name = "李四";
voter2.vote(); // 投票
System.out.println("当前票数:" + Voter.count);
Voter voter3 = new Voter();
voter3.name = "王五";
voter3.vote(); // 非静态的方法调用,类名.方法名
Voter.getCount(); // 静态方法的调用,类名.方法名
for (int i = 0; i < 20; i++) {
Voter v = new Voter();
v.name = "选民" + i;
v.vote();
Voter.getCount();
}
// 类同名时,把包名带上
day01.Demo01 d = new day01.Demo01();
day02.Demo01 d2 = new day02.Demo01();
}
}
/*
选民类
*/
class Voter {
String name; // 选民的名字,每个实例特有的属性
static int count; // 所有选民共用的。属于类的
// 投票方法
public void vote() {
if (count == 20) {
System.out.println("投票活动结束");
} else {
System.out.println(name + "感谢投票");
count++;
}
}
// 静态方法
public static void getCount() {
// 非静态的成员变量在静态方法中不能使用 (name不能用)
System.out.println("当前票数:" + count);
}
}
/*
final 关键字
修饰类:类不能被继承
修饰方法:不能被子类重写
修饰成员变量:只能被赋值一次,不能修改
修饰局部变量:只能被赋值一次,不能修改
*/
public class Demo08 {
}
final class A {
// class B extends A{} 类A不能被继承
}
class B {
final float PI = 3.14f; // 常量
public static final float pi = 3.14f; // 常量
public final void func() {
final String name;
name = "Hello";
// name = "Hello World"; name只能被赋值一次
// PI = 301415926f; 不能修改
}
}
class C extends B {
// public void func() { } 不能被子类重写
}
/*
接口中不能有构造方法
接口采用的是多继承的机制,一个类可以实现多个接口
*/
public class Demo07 {
public static void main(String[] args) {
CommonDoor d1 = new CommonDoor();
d1.open();
d1.close();
AlarmDoor d2 = new AlarmDoor();
d2.open();
d2.close();
d2.alarm();
d2.usb();
}
}
/*
门:抽象类,开门、关门两个方法
警报:接口类,报警的功能
普通门:从门继承,实现开门、关门两个方法
Usb:接口类,提供usb接口
防盗门:从门继承,实现开门、关门两个方法;同时具有报警的功能,实现报警的接口
*/
// 门
abstract class Door {
public abstract void open();
public abstract void close();
}
// 警报
interface Alarm {
void alarm();
}
// Usb接口
interface Usb {
void usb();
}
// 普通门
class CommonDoor extends Door {
@Override
public void open() {
System.out.println("没有锁,一推就开了");
}
@Override
public void close() {
System.out.println("没有锁,一推就关了");
}
}
// 防盗门
class AlarmDoor extends Door implements Alarm, Usb {
@Override
public void open() {
System.out.println("指纹锁,指纹验证成功,门打开");
}
@Override
public void close() {
System.out.println("关门,依次上三道锁");
}
@Override
public void alarm() {
System.out.println("报警:生人靠近!");
}
@Override
public void usb() {
System.out.println("连接电源,给指纹锁充电!");
}
}
|