面向对象一

来源:互联网 发布:股票历史交易数据查询 编辑:程序博客网 时间:2024/05/29 04:40

1:封装

A:.

将成员变量私有化,不让外界访问,提

供公共的访问方法set()/get()方法,---->Alt+shift+s--->r

B:.private关键字的用法:
修饰一个类的成员(成员变量/成员方法/构造方法),只能在本类中访问。

C:.

this关键字出现的原因:是因为局部变量隐藏了成员变量,this---->代表当前类的对象,哪个方法/成员变量被对象调用,那么this这个对象的引用!

D:.

构造方法的特点:类名和方法名相同,连void都没有

构造方法可以重载:
例:
class Student{
private String name;
private int age;
public Student(){
Sop("无参构造方法...");
}
private Student(){}----->目的:为了让外界不创建对象!
public Student(String name,int age){
this name=name;
this age=age;
}
}
构造方法:
如果代码没有给出构造方法,系统默认提供一个无参构造方法
如果代码中给出了有参构造方法,系统将不会提供无参构造方法
类的成员:
1)成员变量:私有化
2)构造方法:有参无参
3)成员方法:set()/get()
方法:
返回值类型:void类型的;非void类型的
形式参数:有参无参
面试题:
成员变量和局部变量的区别?
1)内存位置不同:
成员变量:堆内存
局部变量:栈内存
2)在类中的位置不同
成员变量:类中方法外
局部变量:方法申明上,或者方法定义中
3)生命周期不同:
成员变量:随着类的加载而加载,随着对象的消失而消失
局部变量:随着方法的调用而存在,随着方法调用结束而消失
4)初始化值不同

成员变量:有默认的初始化值:String-->null,int--->0

E:

没有名字的对象

Student s=new Student();对象名是s
匿名对象的格式:new 类名();
new Student();在实际开发中会经常用到对象,一般情况使用一次
匿名对象的好处:省空间,比较方便

F:

形式参数的问题:

基本数据类型作为形式参数:
形式参数的改变不会影响实际参数
引用类型作为形式参数会直接影响实际参数

G:

static关键字的特点:

随着类的加载而加载,优先于对象存在
被static修饰的在内存中只加载一次
例如:定义一个人类:
成员变量:姓名,年龄,国籍
给出构造方法:
Person类中提供的国籍:country,每一个对象都是中国人,这样写不够好,单从内存的角度考虑:
成员变量随着Person类的加载--->堆内存中,每一对象都去开辟内存空间,成员变量对应也会占用内存空间,耗费内存
从代码的风格来讲:代码比较臃肿,不好!
针对这种情况:java就提供了一个关键字:static:静态的,共享的,被共用的
举例:
饮水机:很多人可以共用
水杯:不能共用


给成员变量赋值的几种方式:
1)公共方法:set();
2)有参构造方法

H:

代码块

在Java中用括号括起来的代码叫做代码块
代码块分类:
1)局部代码块:局部位置,用于限定变量的生命周期
2)构造代码块:在类中的成员位置,在执行构造方法之前,必须先执行构造代码块
作用:用来将多个构造方法相同的代码放进来,给对象进行初始化
3)静态代码块:在类中的成员位置,static{}
静态代码块在类中加载一次
构造代码块,静态代码块,构造方法的优先级?    
静态代码块>构造代码块>构造方法

I:

Math:

Math类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数

使用Math的random生成一个随机数,返回带正号的double值,该值大于等于0小于1

例:

package 构造方法;
//学生类:
//类:成员变量 构造方法(无参/有参) 成员方法:set()/get() 该类特有的方法
class Student3{
private String name ;
private int age ;

//set()/get()
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 Student3() {
}


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

public void study(){
System.out.println("学生爱java...");
}
}
//测试类
public class StudentDemo {
public static void main(String[] args) {
Student3 s = new Student3() ;
s.setName("张三") ;
s.setAge(20) ;
System.out.println(s.getName()+"----"+s.getAge());
}
}