Java基础知识

java内容基本含义:


这个Main是类名,因为java是面向对象语言,一个程序基本单位就是类。

public class Main {
  
}

public 是类的修饰符,表示公开的,class是关键字表示一个类,花括号的类的主体。类的主体可以定义类的方法和类的属性。

常量
语法:

final 数据类型 变量名= 变量值;

一旦声明就不可以改变。
局部变量
局部变量也叫方法变量,只在一个方法里可以访问

 public void test1(){
        //局部变量a
        int a = 10;
        System.out.println(a);
    }

    public void test2(){
        //在test1声明的变量a
        //只能在test1里访问,在test2访问就报错
        System.out.println(a);
    }
 public void test1(){
        //局部变量可以声明不初始值不报错
        int a ;
        //使用前一定出事值,不然报错
        System.out.println(a);
    }

成员变量
是定义在类里的方法外面的。

public class Hello {
   
    int x;
    boolean flag = true;

}

成员变量类里的所有方法是可以访问的。

局部变量声明没初始值要自己手动初始化,但是成员变量你不给初始值,编译器会默认给初始值。

继承

关键字:extends
继承的作用:为了实现代码复用。对于所有子类,将公有的属性和方法定义在父类中,子类通过继承来获取这些属性和方法,从而实现代码的复用。

  • 代码的实现
访问修饰符 类名 extends 父类{ }

class Base{ }
/*Base是父类,Son是子类*/
class Son extends Base{ }
  • 继承的特点
  1. 单一继承
    一个类只能继承一个父类,一个父类可以有多个子类。(儿子只能有一个爸爸,爸爸可以有多个儿子)
  2. Object是所有类的根,假如类名后面没有写extends,默认是继承了Object。
    所有类都继承了Object类,所有的类,其方法,都可以调用Object类的所有属性、方法
  3. 继承可以传递,包括直接父类和间接父类(爷 父 孙,孙子可以继承两代的属性和方法,孙和爷属于间接父类)
  • 继承中的构造函数
  1. 构造函数不能被继承,所以子类需要自己声明构造函数,但是在子类的构造函数中,可以调用父类的构造函数。(意思就是,在子类中,构造函数必须要自己重新写,同时也可以在其中调用父类的构造函数)
  2. 如果要调用父类的构造函数,需要注意:在子类的构造函数【第一行】,用super(参数)调用父类的某个构造。
  3. super的隐式调用,假如子类构造函数中,没有在第一行写this()或者super(),
    此时编译器会自动添加隐式的super(),即调用父类的空参构造。此时如果父类没有空参构造,那么将会编译报错!
    比如:
class User{
    private String userName;
    private String password;
    private String num;
    
    public User(String userName, String password) {
        this.userName = userName;
        this.password = password;
    }

    public User(String userName) {
       this(userName,"123");
    }
    public User(String userName, String password, String num) {
        super();//这里调用父类Object得super()空参构造器。
        this.userName = userName;
        this.password = password;
        this.num = num;
    }
}
class ZhangSan extends User{
    //父类没有空参构造器,子类报错
    public ZhangSan(){
    }
}

显示调用和隐式调用父类构造器。

class User{
    private String userName;
    private String password;
    private String num;
    public User() {
    }
    public User(String userName, String password) {
        this.userName = userName;
        this.password = password;
    }

    public User(String userName) {
       this(userName,"123");
    }
    public User(String userName, String password, String num) {
        super();//这里调用父类Object得super()空参构造器。
        this.userName = userName;
        this.password = password;
        this.num = num;
    }
}
class ZhangSan extends User{
    public ZhangSan(){
       // super();隐式调用父类空参构造器。
    }

    public ZhangSan(String userName, String password){
        // super();隐式调用父类空参构造器。
    }

    public ZhangSan(String userName, String password, String num){
       super( userName,  password,  num);//显示调用父类构造器。
    }
}

当构造一个类的实例时,会递归调用父类的构造,直到Object。

public class Test1 {

    public static void main(String[] args) {
        A3 a3 = new A3();
    }
}
class A1{
    public A1(){
        super();//可以不写,隐式调用
        System.out.println("A1");
    }
}
class A2 extends A1{
    public A2(){
        super();//可以不写,隐式调用
        System.out.println("A2");
    }
}
class A3 extends A2{
    public A3(){
        super();//可以不写,隐式调用
        System.out.println("A3");
    }
}

打印结果:

A1
A2
A3
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值