day06
修饰符 本类 同一个包中的类 子类 其他类
public 可以访问 可以访问 可以访问 可以访问
protected 可以访问 可以访问 可以访问 不能访问
默认 可以访问 可以访问 不能访问 不能访问
private 可以访问 不能访问 不能访问 不能访问
package cn.tedu.day06;
package cn.tedu.day06;
/**
- 抽象类的应用
- 大数据基础:大数据框架
- 共性:
- 属性:姓名,年龄,性别
- 行为:讲课
- 抽象类的应用
- 1、抽象方法,用abstract修饰,只有方法的定义,没有方法的具体实现
- 2、抽象类,abstract修饰,包含抽象方法的类,必须是抽象类;(不包含抽象方法的类,也可以升级为抽象类)
- 3、抽象类是不能被实例化的
- 4、抽象类是需要被继承的,继承了抽象类的子类,要么重写所有的抽象方法;要么变普通类为抽象类
- @author Administrator
- 3、意义
- 封装了子类中所共有的属性和行为:——————代码重用
- 为所有的子类体提供一种统一的类型——————向上造型
- 可以包含抽象方法,为所有的子类提供统一的入口
- 扩展:
- 设计规则,
- 将所有的子类/派生类所共有的属性和行为,抽到父类/超类中
- 所有的子类行为都一样,设计为普通类
- 所有子类的行为都不一样,设计为抽象方法
*
*/
public class AbstractDemo {
public static void main(String[] args) {
DataBaseTeacher dat = new DataBaseTeacher();
dat.name = "canglaoshi";
dat.teach();
DataTeacher da = new DataTeacher();
da.name = "xiaoze";
da.teach();
}
}
//父类
abstract class Teacher{
String name;
int age;
char gender;
//讲课
public abstract void teach();
}
class DataBaseTeacher extends Teacher{
@Override
public void teach() {
System.out.println("基础课程" );
}
}
class DataTeacher extends Teacher{
String name;
@Override
public void teach() {
System.out.println("框架");
}
}
package cn.tedu.day06;
/**
- 企业中
*项目经理
*姓名,工号,工资,工作内容,奖金
*程序员
*姓名,工号,工资,工作内容 - @author Administrator
*
*/
public class AbstractTest {
public static void main(String[] args) {
Staff st = new Staff();
st.name = "小白";
st.id = 111;
st.salary = 8000.00;
st.Working();
Boss bs = new Boss();
bs.name = "sb";
bs.id = 222;
bs.salary = 20000.00;
bs.Working();
bs.Jiangjin = "500";
System.out.println("姓名:" + bs.name + "工号" + bs.id +"工资" + bs.salary );
}
}
abstract class Info{
String name;
int id;
double salary;
public abstract void Working();
}
class Staff extends Info{
String work;
@Override
public void Working() {
}
}
class Boss extends Info{
String Jiangjin;
String work1;
@Override
public void Working() {
}
}
package cn.tedu.day06;
public class InterfaceDemo {
public static void main(String[] args) {
Mayun m = new Mayun();
//Code.codeNumber
m.code();
m.studyCode();
}
}
interface Code{
public static final int codeNumber = 10000;
public abstract void code();
}
class LaoBan{
}
class Programmers{
public void studyCode() {
System.out.println("敲代码");
}
}
class Mayun extends Programmers implements Code{
@Override
public void code() {
}
}
package cn.tedu.day06;
/**
- 足球运动员和教练
- 篮球运动员和教练
- 现在足球运动员和教练去德国学习,需要学习德语
- @author Administrator
- 分析:从下而上
- 1、接口不能被实例化,
- 2、接口可以多是实现,但是继承为单继承
- 3、接口中是可以定义方法的,方法也有固定的修饰词:public abstract
- 4、子类必须覆盖接口中所有的抽象方法,子类才可以实例话,否则子类是一个抽象类
- 5、接口中是可以定义变量的,但是变量有固定的修饰符:public static
- 也称为常量,值不发生改变
- final
- 1、本身是一个修饰符,可以用于修饰类,成员变量,成员方法
- 2、被final修饰的类,它是不能被继承,也不能有子类
- 3、final修饰的类,不能被重写
- 4、final修饰的变量,不可以被修改,是常量
-
public class InterfaceTest {
public static void main(String[] args) {
FootBall ft = new FootBall();
ft.name = "pipi";
ft.age = 20;
ft.eat();
ft.study();
ZuqiuTeacher zqls = new ZuqiuTeacher();
zqls.name = "wangyu";
zqls.age = 35;
ft.eat();
ft.study();
}
}
abstract class Person{
String name;
int age;
public abstract void eat();
public abstract void sleep();
}
interface Study{
public abstract void study();
}
abstract class SportMan extends Person{
@Override
public void eat() {
}
}
class FootBall extends SportMan implements Study{
public void learn() {
}
@Override
public void sleep() {
// TODO Auto-generated method stub
}
@Override
public void study() {
System.out.println("学习德语");
}
}
class BasketBall extends SportMan{
public void guanLan() {
}
@Override
public void sleep() {
// TODO Auto-generated method stub
}
}
abstract class Jiaolian extends Person{
}
class ZuqiuTeacher extends Jiaolian implements Study{
@Override
public void eat() {
// TODO Auto-generated method stub
}
@Override
public void sleep() {
// TODO Auto-generated method stub
}
@Override
public void study() {
// TODO Auto-generated method stub
}
}
class LanqiuTeacher extends Jiaolian{
@Override
public void eat() {
// TODO Auto-generated method stub
}
@Override
public void sleep() {
// TODO Auto-generated method stub
}
}
package cn.tedu.day06;
/**
- static,静态变量
- 1、由static修饰
- 属于类中,存储在方法区中,只有一份;
- 通过类名,来进行调用;
- 所有的对象所共享的资源的时候(图片,视频,音频等)
- 2、静态方法
- static修饰:
- 属于类,存储在方法区,只有一份
- 通过类名,来调用
- 何时用?方法的操作只与参数相关,但是与对象无关
- 3、静态代码块
- 属于类中,在类被加载期间进行自动调用,类只能被加载一次,所以静态代码块也只执行一次
- 初始化,加载静态资源的时候调用
- @author Administrator
*
*/
public class Super{
public static void main(String[] args) {
Too t1 = new Too();
Too t2 = new Too();
Too t3 = new Too();
System.out.println(t1.id + "," +t2.id + "," + t3.id + ","+Too.i);
}
}
class Too{
int id;
static int i = 0;
public Too(){
id = i++;
}
}