目标:1.了解代码块,内部类(静态,普通内部类)的用法
2. 了解多态,继承的用法
内容:
一.代码块的定义和使用
1.定义:代码块是一种常见的代码形式,即用大括号“{}”将多行代码封装在一起,形成一个独立的代码区。
2.好处:在创建对象之前做的准备工作,能优先被调用,类似于静态变量 静态函数等事先工作
3.类型:
静态代码块:指用static关键字修饰的代码块,方法中不能存在静态代码块
静态代码块里面不能调用成员变量和实例方法,并且只运行一次
static {
System.out.println("静态代码块");
}
构造代码块:直接写在类中的代码块
构造代码块在创建对象时被调用,每次创建对象都会调用一次(和静态代码块的区别是少了static修饰)
{
System.out.println("构造代码块");
}
普通代码块:直接写在方法体中的代码块
在方法中用{}直接括起来的代码的集合
class Person{
public void Student(){
System.out.println("普通代码块");
}
}
二.内部类的定义与使用
1.定义:在 Java 中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类
静态内部类:静态内部类也是定义在另一个类里面的类,只不过在类的前面多了一个关键字static。
静态内部类是不需要依赖于外部类的,这点和类的静态成员属性有点类似,并且它不能使用外部类的非static成员变量或者方法,这点很好理解,因为在没有外部类的对象的情况下,可以创建静态内部类的对象,如果允许访问外部类的非static成员就会产生矛盾,因为外部类的非static成员必须依附于具体的对象。
public class Test {
public static void main(String[] args) {
Outter.Inner inner = new Outter.Inner();
}
}
class Outter {
public Outter() {
}
static class Inner {
public Inner() {
}
}
}
普通内部类:普通内部类在非静态类内部可以访问外部类的成员,而静态内部类不能访问外面的方法和成员。
三.继承的定义与用法
1.定义:继承就是子类继承父类的对象和方法
2.用法
class 父类 {
}
class 子类 extends 父类 {
}
关于继承中的关键词
extends:继承,一个子类只能拥有一个父类
this:指向自己的引用
super:实现对父类成员的访问,用来引用当前对象的父类。
final:可以把类定义为不能继承的,即最终类,不能被子类重写。
举个栗子:
class Person {
public String name;
protected int age;
public Person(String name,int age){
this.name = name;
this.age = age;
}
public void walk() {
System.out.println(name+":人走路");
}
public void eat() {
System.out.println(name+":人吃饭");
}
}
四.多态的定义与用法
1.定义:同一个方法不同的实现,或者说在不同的子类中,有不同的实现。
2.用法:
class TestExtends{
public static void main(String[] args){
C testc = new C();
A testc2 = new C();
//上面两种输出均为“in C”
testc2.info();
}
}
class A{
public void info()
{
System.out.println("in A");
}
}
class B extends A{
@Override
public void info(){
System.out.println("in B");
}
}
class C extends A{
@Override
public void info(){
System.out.println("in C");
}
}