Java面向对象03

第1章 final和static关键字

1.1 final关键字的概述及特点

• final关键字是最终的意思,可以修饰类,成员变量,成员方法。
– 修饰类,类不能被继承
– 修饰变量,变量就变成了常量,只能被赋值一次
– 修饰方法,方法不能被重写

1.2 static关键字的概述及特点

1.2.1 静态的概述
当在定义类的时候,类中都会有相应的属性和方法。而属性和方法都是通过创建本类对象调用的。当在调用对象的某个方法时,这个方法没有访问到对象的特有数据时,方法创建这个对象有些多余。可是不创建对象,方法又调用不了,这时就会想,那么我们能不能不创建对象,就可以调用方法呢?
可以的,我们可以通过static关键字来实现。static它是静态修饰符,一般用来修饰类中的成员。

1.2.2 静态的特点
– 被类的所有对象共享
• 这也是我们判断是否使用静态关键字的条件
– 可以通过类名调用
– 优先于对象存在
– 随着类的加载而加载

1.2.3 案例代码二


```java
package com.itheima_01;

public class StaticDemo {
	public static void main(String[] args) {
		Student.graduateFrom = "学院";
		
		Student s1 = new Student();
		s1.name = "林青霞";
		s1.age = 30;
		//s1.graduateFrom = "学院";
		s1.show();
		System.out.println("----------------------");
		
		Student s2 = new Student();
		s2.name = "刘德华";
		s2.age = 28;
		//s2.graduateFrom = "学院";
		s2.show();
	}
}

package com.itheima_01;

public class Student {
	public String name;
	public int age;
	//public String graduateFrom; //毕业院校
	public static String graduateFrom; //毕业院校
	
	public void show() {
		System.out.println(name+"---"+age+"---"+graduateFrom);
	}
}

1.3 static方法的访问特点及注意事项

• 静态方法的访问特点
– 静态方法只能访问静态的成员变量和静态的成员方法
– 静态方法的注意事项
– 在静态方法中是没有this,super关键字的
• 静态的内容是随着类的加载而加载,this和super是随着对象的创建而存在。也就是说我的静态方法是优先于对象进内存的,那么先进内存的是不能访问后进内存的。

第2章 抽象类

2.1 抽象类概述
当编写一个类时,我们往往会为该类定义一些方法,这些方法是用来描述该类的功能具回想前面我们的猫狗案例,提取出了一个动物类,这个时候我们是可以通过Animal a = new Animal()来创建动物对象的,其实这是不对的。为什么呢?因为,我说动物,你知道我说的是什么动物吗?只有看到了具体的动物,你才知道,这是什么动物。 所以说,动物本身并不是一个具体的事物,而是一个抽象的事物。只有真正的猫,狗才是具体的动物。同理,我们也可以推想,不同的动物吃的东西应该是不一样的,所以,我们不应该在动物类中给出具体体现,而是应该给出一个声明即可。在Java中,一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象类。

2.2 抽象类的特点
抽象类和抽象方法必须用abstract关键字修饰
格式:
public abstract class 类名 {}
public abstract void eat();
抽象类不一定有抽象方法,有抽象方法的类一定是抽象类
抽象类不能实例化
那么,抽象类如何实例化呢?
按照多态的方式,由具体的子类实例化。其实这也是多态的一种,抽象类多态。
抽象类的子类
要么是抽象类
要么重写抽象类中的所有抽象方法

2.2.1 案例代码五

package com.itheima_02;
public class AnimalDemo {
	public static void main(String[] args) {
		//创建对象
		//Animal a = new Animal();
		//按照多态的形式实例化抽象类
		Animal a = new Cat();
		a.eat();
		a.sleep();
	}
}
package com.itheima_02;

public abstract class Dog extends Animal {
	
}

package com.itheima_02;

public class Cat extends Animal {

	@Override
	public void eat() {
		System.out.println("猫吃鱼");
	}

}
package com.itheima_02;
//抽象类
public abstract class Animal {
	//抽象方法
	public abstract void eat();
	
	public void sleep() {
		System.out.println("睡觉");
	}
}

2.3 抽象类的成员的特点
• 成员变量
– 可以是变量
– 也可以是常量
• 构造方法
– 有构造方法,但是不能实例化
– 那么,构造方法的作用是什么呢?
• 用于子类访问父类数据的初始化
• 成员方法
– 可以有抽象方法 限定子类必须完成某些动作
– 也可以有非抽象方法 提高代码复用性

第3章 接口的概述以及练习
3.1 接口的概述
为了体现事物功能的扩展性,Java中就提供了接口来定义这些额外功能,并不给出具体实现。
3.2 接口的特点
• 接口用关键字interface表示
– 格式:public interface 接口名 {}
– 类实现接口用implements表示
• 格式:public class 类名 implements 接口名 {}
– 接口不能实例化
• 那么,接口如何实例化呢?
• 按照多态的方式,由具体的实现类实例化。其实这也是多态的一种,接口多态。
– 接口的实现类
• 要么是抽象类
要么重写接口中的所有抽象方法

3.2.1 案例代码八

package com.itheima_01;

public class InterfaceDemo {
	public static void main(String[] args) {
		//Jumpping j = new Jumpping();
		//接口多态的形式实例化
		Jumpping j = new Cat();
		j.jump();
	}
}
package com.itheima_01;

public class Cat implements Jumpping {

	@Override
	public void jump() {
		System.out.println("猫可以跳高了");
	}

}
package com.itheima_01;

public abstract class Dog implements Jumpping {

}

package com.itheima_01;
//定义了一个跳高的接口
public interface Jumpping {
	//抽象方法
	public abstract void jump();
}

3.3 接口的成员特点
• 成员变量
– 只能是常量
– 默认修饰符 public static final
• 构造方法
– 没有,因为接口主要是扩展功能的,而没有具体存在
• 成员方法
– 只能是抽象方法
– 默认修饰符 public abstract

3.4 类与类_类与接口_接口与接口的关系
• 类与类
– 继承关系,只能单继承,但是可以多层继承
• 类与接口
– 实现关系,可以单实现,也可以多实现。还可以在继承一个类的同时实现多个接口
• 接口与接口
– 继承关系,可以单继承,也可以多继承

3.4.1 案例代码十
package com.itheima_03;
/*

  • 类与类:
  •  继承关系,只能单继承,可以多层继承。
    
  • 类与接口:
  •  实现关系,可以单实现,也可以多实现。
    
  •  还可以在继承一个类的同时实现多个接口。
    
  • 接口与接口:
  •  继承关系,可以单继承,也可以多继承。
    

*/
public class InterfaceDemo {

}

package com.itheima_03;

public interface Sister extends Father,Mother {

}

package com.itheima_03;

public class Son extends Object implements Father,Mother {

}

package com.itheima_03;

public interface Mother {

}

package com.itheima_03;

public interface Father {

}

3.5 抽象类与接口的区别
• 成员区别
抽象类 变量,常量;有抽象方法;抽象方法,非抽象方法
接口 常量;抽象方法
• 关系区别
类与类 继承,单继承
类与接口 实现,单实现,多实现
接口与接口 继承,单继承,多继承
• 设计理念区别
抽象类 被继承体现的是:”is a”的关系。共性功能
接口 被实现体现的是:”like a”的关系。扩展功能

第4章 包的概述和权限修饰符

4.1 包的概述和注意事项
4.1.1 包的概述
– 其实就是文件夹
– 作用:对类进行分类管理
– 包的划分:
• 举例:
– 学生的增加,删除,修改,查询
– 老师的增加,删除,修改,查询
– 以及以后可能出现的其他的类的增加,删除,修改,查询
– 基本的划分:按照模块和功能分。
– 高级的划分:就业班做项目的时候你就能看到了。
4.1.2 定义包的格式
– package 包名;
• 多级包用.分开即可
– 注意事项:
• package语句必须是程序的第一条可执行的代码
• package语句在一个java文件中只能有一个
4.1.3 案例代码十四

package com.itheima;
//package com.itheima2;
/*
 * 包:其实就是文件夹。
 * 作用:就是对类进行分类管理。
 * 
 * 举例:
 * 		学生:增加,删除,修改,查询
 * 		老师:增加,删除,修改,查询
 * 		...
 * 
 * 		方案1:按照功能分
 * 			com.itheima.add
 * 				AddStudent
 * 				AddTeacher
 * 			com.itheima.delete
 * 				DeleteStudent
 * 				DeleteTeacher
 * 			...
 * 		方案2:按照模块分
 * 			com.itheima.student
 * 				AddStudent
 * 				DeleteStudent
 * 				...
 * 			com.itheima.teacher
 * 				AddTeacher
 * 				DeleteTeacher
 * 包的定义格式:
 * 		package 包名;
 * 		如果是多级包用.隔开即可
 * 注意事项:
 * 		A:package必须是程序的第一条可执行语句
 * 		B:package语句在一个java文件中只能有一个
 */
public class PackageDemo {

}

4.2 导包的格式及使用
4.2.1 导包概述
不同包下的类之间的访问,我们发现,每次使用不同包下的类的时候,都需要加包的全路径。比较麻烦。这个时候,java就提供了导包的功能。
4.2.2 导包格式
– import 包名;

4.2.3 案例代码十五

package com.itheima;
/*
 * 导包:
 * 		import 包名;
 */
import cn.itcast.Teacher;

public class Test {
	public static void main(String[] args) {
		Student s = new Student();
		s.show();
		
		/*
		//我要使用Teacher下的method()方法
		//类不在同一个包下,使用的时候,要加类的全路径名称
		cn.itcast.Teacher t = new cn.itcast.Teacher();
		t.method();
		t.method();
		
		cn.itcast.Teacher t2 = new cn.itcast.Teacher();
		t2.method();
		//这样做太麻烦了,java就提供了一个导包的功能
		 * 
		 */
		
		Teacher t = new Teacher();
		t.method();
		
	}
}
package com.itheima;
public class Student {
	public void show() {
		System.out.println("show");
	}
}
package cn.itcast;
public class Teacher {
	public void method() {
		System.out.println("method");
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值