JAVA基础(三)

局部变量和成员变量的区别?

  • 在类中的位置不同:
    成员变量在类中方法外;
    局部变量在方法内或者方法声明上;
  • 在内存中位置不同;
    成员变量 堆内存
    局部变量 栈内存
  • 生命周期不同;
    成员变量,随着对象的存在而存在,随着对象的消失而消失;
    局部变量,随着方法的调用而存在,随着方法的调用完毕而消失;

形式参数分别为基本类型和引用类型的问题?

形式参数是基本类型,直接调用

形式参数是引用类型,要先实例化一个对象后,再通过对象调用

匿名对象是什么?应用场景是什么?

匿名对象是没有名字的对象,是对象的一种简化表示形式。列如new Student.show();
匿名对象使用在对象调用方法仅仅一次的时候和作为实际参数传递时候;

封装是什么?java中封装的体现有哪些?请举例说明。

封装指隐藏对象的属性的实现细节,仅对外提供公共访问的方式。
  • 原则:
    将不需要对外提供的内容都隐藏起来。
    把属性隐藏,提供公共方法对其访问。

this关键字是什么?this关键字的应用场景?

this关键字代表所在类对象引用。
方法被哪个对象调用,this就代表哪个对象。

构造方法的作用是什么?构造方法的特点是什么?构造方法的注意事项是什么?构造方法中可不可以写return语句呢?

构造方法的作用是给对象的数据进行初始化。
  • 构造方法的格式
    方法名与类名不同
    没有返回值类型,包括void
    没有具体的返回值
  • 构造方法的注意事项
    如果你不提供构造方法,系统会给出默认构造方法
    如果你提供了构造方法,系统将不再提供
    构造方法也是可以重载的

给成员变量赋值有几种方式?

两种方式
  • Setxx()方法,修改属性值
  • 构造方法,给对象中属性进行初始化

标准的代码编写及测试:

A: 学生类的案例
class Student{

    private String Name;
    private int age;
    private int grader;
    
    public Student(String name, int age, int grader) {
        super();
        Name = name;
        this.age = age;
        this.grader = grader;
    }
    public String getName() {
        return Name;
    }
    public void setName(String name) {
        Name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public int getGrader() {
        return grader;
    }
    public void setGrader(int grader) {
        this.grader = grader;
    }

}   

B: 手机类的案例
class Phone{
private String name;
private int price;

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public int getPrice() {
    return price;
}

public void setPrice(int price) {
    this.price = price;
}



public Phone(String name, int price) {
    super();
    this.name = name;
    this.price = price;
}

}

C: 长方形类的案例
class Squal{
private double high;
private double length;

    public Squal(double high, double length) {
        super();
        this.high = high;
        this.length = length;
    }
    public double getHigh() {
        return high;
    }
    public void setHigh(double high) {
        this.high = high;
    }
    public double getLength() {
        return length;
    }
    public void setLength(double length) {
        this.length = length;
    }
    
}   

一个类的成员变量初始化过程

Student s = new Student();
  1. 将Student.class加载进内存
  2. 在占内存为s开辟空间
  3. 在堆内存为学生对象开辟空间
  4. 在学生对象的成员变量进行默认初始化
  5. 在学生对象的成员变量显示默认初始化
  6. 通过构造方法对学生对象的成员变量赋值
  7. 学生对象初始化完毕,把对象地址复制给s变量

static关键字是什么?有什么特点?

static关键字可以修饰成员变量和成员方法。
  • static的特点:
    随着类的加载而加载
    优先于对象存在
    被类的所有对象共享
    可以通过类名调用

main方法各种修饰符及参数的解释?

main方法首先是静态的
public static void main(String[] arg){}
  1. public 被Jvm调用,访问权限足够大
  2. static 被Jvm调用,不用创建对象,直接类名访问
  3. void 被Jvm调用,不需要给Jvm返回值
  4. main 一个通用的名称,会被Jvm识别
  5. String[] arg 以前用于接受键盘录入

代码块是什么?代码块的分类和各自特点?

代码块:在Java中,使用{}括起来的代码成为代码块
局部代码块:局部位置,用于限定变量的生命周期
构造代码块:在类中的成员位置。每次调用构造方法执行前,都会先执行构造代码块。作用:把多个构造方法的共同代码放在一起。
静态代码块:在类中的成员位置,只不过它用static修饰。

静态代码块,构造代码块,构造方法的执行流程?

  1. 静态随着类的加载而加载
  2. 静态代码块->构造代码块->构造方法的执行流程
    静态代码块->构造代码块->构造方法
  3. 只要有子父关系,肯定先初始化父亲的数据,然后初始化子类的数据。

继承概述

多个类存在相同属性和行为时候,将这些内容抽取到单独一个类中,那么多各类无需再定义这些属性和行为,只要继承那个类即可。

继承的好处

提高复用性
提高维护性
让类与类之间产生了关系

Java中继承的特点

JAVA只支持单继承。
JAVA支持多层继承

Java中继承的注意事项?以及我们什么时候使用继承?

  1. 子类只能继承父类所有非私有的成员
  2. 子类不能继承父类的构造方法,但可以通过super关键字去访问父类构造方法
  3. 不要为了部分功能去继承

继承中构造方法的执行流程?假如父类没有无参构造方法,子类应该怎么办?

静态代码块->构造代码块->构造方法
  1. 子类通过super去显式调用父类其他的带参的构造方法
  2. 子类通过this去调用本类的其他构造方法

面试题:

方法重写和方法重载的区别?方法重载能改变返回值类型吗?

Overload:方法重载,提高通用性,只提供一个方法,但是参数类型和个数不同。可以改变返回值类型。

Override:方法重写,源于继承,父类方法不能满足子类的需要就可以重写父类的方法。

this关键字和super关键字分别代表什么?以及他们各自的使用场景和作用。

this关键字代表本类对象引用,成员变量和局部变量重名时,可以用this来区分。
super关键字代表父类对象引用,从子类中调用父类的构造方法。
场景:
    成员变量:
        this.成员变量;
        super.成员变量;
    构造方法:
        this(…………);
        super(…………);
    成员方法:
        this.成员方法;
        super.成员方法;

        ##  final关键字可以干什么?有什么特点?
  • 修饰类,类不能被继承。
  • 修饰变量,变量就编程了常量,只能被赋值一次
  • 修饰方法,方法不能被重写

final关键字的面试题?

A: 修饰局部变量
在方法内部,该变量不可被改变。
在方法声明上,分别演示基本类型和引用类型作为参数的情况
基本类型:是值不能被改变
引用类型:是地址值不能被改变

B: 初始化时机
在对象构造完毕前

多态是什么,前提是什么?

  • 某一个事务,在不同时刻表现出来的不同形态
    例如: 猫 cat=new 猫();
    动物 cat=new 猫();
  • 使用多态的前提是要有继承关系,要有方法的重写,有父类引用指向子类对象

多态中成员访问的特点?

成员变量
编译看左边,运行看左边

成员方法
编译看左边,运行看右边

静态方法
编译看左边,运行看左边

多态的好处及弊端?如何解决多态的弊端?

  • 好处
    -- 提高了程序的维护性
    -- 提高了程序的扩展性

  • 弊端
    -- 不能访问子类特有功能

什么是向上转型?什么是向下转型?

  • 向上转型
    -- 从子到父
    -- 父类引用指向子类对象

  • 向下转型
    -- 从父到自
    -- 父类引用转为子类对象

抽象类概述及其特点?

  • 抽象类和抽象方法必须用abstract关键字修饰
  • 抽象类不一定有抽象方法,有抽象方法的一定是抽象类
  • 抽象类不能被实例化,要实例化抽象类得按照多态的方式,由具体的子类实例化。
  • 抽象类的子类不是抽象类就是重写抽象类的所有抽象方法

抽象类成员特点?

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

抽象类练习?

public static void main(String[] args) {
        // TODO Auto-generated method stub
        Dog d=new Dog();
        d.setName("Roper");
        d.setAge(20000);
        System.out.println(d.getName()+","+d.getAge());
        d.eat();
        
        Cat c=new Cat();
        c.setName("Rbao");
        c.setAge(3);
        System.out.println(c.getName()+","+c.getAge());
        c.eat();

    }

}

abstract class Animal{
    private String name;
    private int age;
    
    public Animal() {}
    
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }


    public Animal(String name, int age) {
        super();
        this.name = name;
        this.age = age;
    }

//定义一个抽象方法
    public abstract void eat();
} 

class Dog extends Animal{
    public Dog() {}

    public Dog(String name,int age) {
        super(name,age);
    }
    
    @Override
    public void eat() {
        // TODO Auto-generated method stub
        System.out.println("Dog eat meat");
    }   
}

class Cat extends Animal {
    public Cat() {}
    public Cat(String name,int age) {
        super(name,age);
    }
    public void eat() {
        System.out.println("Cat eat fish");
    }
}

抽象类的小问题

A: 一个类如果没有抽象方法,可不可以定义为抽象类?如果可以,有什么意义?
抽象类不一定有抽象方法,有抽象方法的一定是抽象类
增加了代码的可用性

B: abstract不能和哪些关键字共存
private 冲突
final 冲突
static 无意义

接口的概述及其特点?

定义事务功能的扩展性。

接口的成员特点?

接口用关键字interface
类实现接口implements表示
接口不能势力话
接口的子类

接口的练习?

    class JumpCat extends Cat implements Action{
    public JumpCat() {}
    public JumpCat(String name , int age) {
        super(name,age);
    }
    public void Action() {
        System.out.println("猫会跳");
    }
}

interface Action{
    public abstract void Action() ;
}

抽象类和接口的区别?

、|参数|抽象类|接口|
|-|-|-|
|默认的方法实现|它可有默认方法实现|接口完全是抽象的。不存在方法实现|
|构造器|可以有构造器|不能有构造器|
|访问修饰符|接口方法可以有public、protected和default这些修饰符|接口方法默认修饰符是public、你不可以使用其他修饰符。|
|main方法|抽象方法有main方法|没有main方法|
|速度|比接口速度快|接口稍微有点慢|
|添加新方法|可以提供给它默认实现的|必须实现该接口的类,才可以添加新方法|

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,634评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,951评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,427评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,770评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,835评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,799评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,768评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,544评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,979评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,271评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,427评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,121评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,756评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,375评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,579评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,410评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,315评论 2 352

推荐阅读更多精彩内容