1.面向对象和面向过程的区别?
面向过程:
1.逻辑过程;
2.不适合解决复杂逻辑的需求;耦合度高,扩展力差;
面向对象:
扩展性强;
2.类是不存在的,是人的大脑高度抽象的结果,是共同特征的提取,是一个模板。
Student student = new Student();
类创造对象就是对象的实例化;?
对象又被称为实例。
所有的对象要创建必须基于类;对象是实际存在的个体;
类:状态和动作。
状态:属性
动作:方法
引用数据类型:class类(sun提供的System等)。自定义的Students类也是引用类型。
Student s; Student是数据类型(引用数据类型),s是引用;
基本数据类型:int等
3对象的创建和使用
1.实例变量就是对象变量;
2.访问成员变量必须先创建对象;
new是一个运算符,在jvm堆内存当中开辟新的内存空间;
方法区内存:在类加载的时候,class字节代码片段被加载到内存空间中;
栈内存(局部变量):在代码片段执行的时候,会给该方法分配内存空间,在栈内存中压栈。
堆内存():创建对象是在堆内存;
成员变量默认值要清楚,引用类型默认值是null
Student student = new Student();
//在堆内存中开辟的内存空间是对象;
//student是堆内存(对象)的地址,叫做引用
**对象:**new运算符在堆内存中开辟的内存空间;
访问堆内存中的数据必须使用引用去访问,java不能直接操作堆内存。
程序员只能通过引用访问堆内存中对象内部的实例变量;实例变量是一个对象一份。
实例变量在对象中,不能通过类名访问,只能先创建对象,再访问实例变量;
访问实例变量的格式:
读:引用.实例变量;
修改:引用.实例变量 = 值;
问:为什么对类的变量不在定义的时候初始化,而要放在构造器?
答:因为面向对象,可以使用构造器创建不同的对象实例。
问:new的作用是什么?
答:类是什么?模板,在空中,不接地气。对象变量创建之后相当于一个空箱子,但没有装任何东西,new操作符相当于将东西(类)用装进去。在堆内存中开辟了对象的空间。
问:Java中点操作符的作用?
调用类的属性或者对象的方法。
static关键字的作用是什么?
通常情况下,访问类的成员是通过方法的,使用static关键字后,不通过创建对象直接进行访问。static的变量实质上就是全局变量 。
注意:通过static声明的变量是被所用的实例变量共用,而没有产生相应的拷贝。对于非static变量的实例对象,通过对象去访问,实际上是产生对应实例变量的拷贝。
class Test{
static int a;
static int b;
static void teststatic(){
}
}
//声明static代码块
static{
a = a+b;
}
//在类外面访问方法和变量
Test.a//访问a
Test.b//访问b
Test.teststatic()//访问方法
问:为什么main函数必须被声明为public static ?
声明为public是因为执行mian函数必须要依赖于java环境,如果不声明为public,则只能在package里面使用。static意味着main最先被执行。
问:多态是什么意思?
多态意味着父类对象变量可以引用子类对象。
public class AnimalTest{
public static void main(String args[]){
Animal test1 = new Animal(10,"mimi");
Animal test2 = new Dog(10,"mimi","yellow");//这里就是多态的体现
//test1 声明的类型是Animal,getColour()没有在Animal中定义
//test1.getColour();
System.out.println("test2信息如下:"+test2.getName()+" "+test2.getAge());
}
}
class Animal{
private int age;
private String name;
public Animal(int a, String n){
age = a;
name = n;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
class Dog extends Animal{
private String colour;
public Dog(int a, String n, String c){
super(a,n);
colour = c;
}
public String getColour() {
return colour;
}
}
问:final有哪些作用?
答:有四种作用:1.修饰类,该类不能被继承;2.修饰方法,该方法不能被重写;3.修饰变量,该变量只有一次赋值机会,相当于常量。4.修饰引用,意味着该引用只能被赋值一次。