黑马程序员---java基础---代码块及继承



 ------- android培训java培训、期待与您交流! ----------

一.代码块(理解):
 1.普通代码块(类体中):包含:局部代码块(方法或其它代码块内)
 2.静态代码块:(类体中)
 作用:
 1.初始化成员变量。
 执行流程:
 1.普通构造代码块:每次实例化此类对象时,会被执行。它会先于"构造方法"被执行;
 2.静态代码块:第一次实例化此类对象时;
 3.静态代码块-->普通构造代码块-->构造方法:

如:

class Student
{
 static int[] array;

 public Student(){
  array = new int[10];
  System.out.println("构造方法");
  
 }
 {
  System.out.println("构造代码块");
 }
 static{
  array = new int[10];
  System.out.println("静态代码块");
 }
}
class Demo 
{
 public static void main(String[] args) 
 {
  Student stu = new Student();
  System.out.println("-----------------------");
  Student stu1 = new Student();
 }
}



 
二.继承(必须掌握):
 1.使用关键字:extends
 2.作用:提高了可维护性。代码重用。为多态提供了前提;

class Person
{
 String no;
 String name;
 int age;
 char sex;

 void eat(){
  System.out.println("我吃饭");
 }
}
class Student extends Person
{
 void study(){
  System.out.println("我学习Java");
 }
}
class Teacher extends Person
{
 void teach(){
  System.out.println("我教Java");
 }
}

class Demo 
{
 public static void main(String[] args) 
 {
  Student stu = new Student();
  stu.no = "it001";
  stu.name = "刘德华";
  stu.age = 20;
  stu.sex = '男';

  stu.eat();
  stu.study();
 }
}



3. this和super的区别:

 (1).this:
  1).每个类都有的一个隐式的变量;
  2).存储是当前对象的引用,是实例化此类的对象时,由JVM自动为其赋值的;
  3).this可以访问本类的成员变量、成员方法、构造方法;
  4).使用this()调用本类其它构造方法的注意事项:
    A.this()调用其它构造方法,这种语句只能出现在某个构造方法中;
    B.如果调用带参的构造方法,可以使用this(实参)方式调用;
    C.构造方法不能"递归调用";
    D.this()调用其它构造方法时,这种语句必须出现在这个构造方法的第一行有效语句;
  5).什么时候必须使用this:
    A.局部变量覆盖成员变量;使用this访问被覆盖的成员变量;
    B.在本类的一个构造方法中调用本类的另一个构造方法时。this()或this(实参)
 (2).super:
  1).每个类都有的一个隐式的变量;
  2).存储的是父类对象的引用;是实例化子类对象时,由JVM自动为其赋值的;
  3).super可以访问父类的成员变量、成员方法、构造方法;
  4).使用super()调用父类的构造方法的注意事项:
    A.super()调用父类构造方法的语句,只能出现在子类的某个构造方法内;
    B.使用super(实参)可以调用父类带参数的构造方法;
    C.super()调用父类的构造方法时,这条语句必须出现在子类构造方法的第一条有效语句;
  5).什么时候必须使用super:
    A.子类成员覆盖了父类成员时,可以使用(super.父类成员)访问父类的被覆盖的成员;
    B.如果父类中没有无参构造方法,子类的每个构造方法都必须的使用super(实参)调用父类中带参的构造方法;

 注意:在一个构造方法中,不能同时使用this()和super()。因为它们都需要在第一行有效语句;

class Student
{
 String name;

 Student(){
 // this("张三");//可以传递实参;
  System.out.println("无参构造方法");
 }
 Student(String name){
  //可以调用无参的构造方法
 // Student();//调用构造方法不能使用这种语法

  this();//正确的。调用本类无参的构造方法;
  System.out.println("String参数的构造方法");
 }

 void show(){
 // this();//错误,在普通方法中,不能调用构造方法;
  System.out.println("我叫:" + this.name);//可以访问本类的成员变量;
 }
 void fun(){
  this.show();//可以访问本类的其它成员方法;
 }
}
class ThisDemo 
{
 public static void main(String[] args) 
 {
  Student stu = new Student("张三");
 }
}


 4.类的初始化过程:
  加载class文件
  堆中开辟空间
  变量的默认初始化
  变量的显示初始化
  构造代码块初始化
  构造方法初始化
   成员变量-->构造代码块-->构造方法
 5.Java中继承的特点:
  1).Java中只能单继承;
  2).Java中可以多级继承;
 6.继承的好处和弊端:
  好处:
  1).代码复用
  2).为多态提供了前提;
  弊端:
  1).由于继承,子类对父类产生了依赖;
三.方法重写:
 1.在子类中,定义跟父类一模一样的方法,这叫:方法重写;
 2.重写的规则:
  1).返回值类型、方法名、形参列表:要完全一致;
  2).子类的访问修饰符可以跟父类的相同,或更宽;
 3.重写的意义:
  1).子类保留了父类的方法,具有了自己特有的行为;
 4.重写和重载的区别:
  1).重写:在子类中定义跟父类一模一样的方法;
  2).重载:在一个类中,定义:方法名相同,参数列表不完全相同的方法,叫:重载。跟返回值类型无关;

 
四.final关键字:
 1.可以修饰:
  成员变量:表示其变量拥有最终的值,不能被更改,成为"常量"。修饰基本数据类型:表示其值不能被修改。修饰引用数据类型,表示地址不能被修改;
  成员方法:表示最终的方法。不能被重写;
  类:   表示最终类。不能被继承;
  局部变量:表示其值不能改变;区分:基本类型和引用类型;
  方法形参:表示其值不能改变;区分:基本类型和引用类型;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值