0501-0501-0501-0501-0501-0501-0501-0501-0501-0501-0501-0501-0501-0501-0501-0501-0501-0501-0501-0501-0501-
一、面向对象
1、面向对象是相对于面向过程而言的。
2、面向对象和面向过程都是一种思想。
3、面向过程强调的就是功能行为。
4、面向对象:将功能封装进对象,强调的是具备了功能的对象。
5、面向对象是基于面向过程的。
0504-0504-0504-0504-0504-0504-0504-0504-
成员变量和局部变量的区别:
1、作用范围不同:
【成员变量】作用于整个类。
【局部变量】作用于方法内,或者语句内。
2、在内存中的位置不同:
【成员变量】在堆内存中,因为对象的存在,才在内存中存在。
【局部变量】在栈内存中。
3、初始化值
【成员变量】可以只声明,不赋值。系统会给它一个默认的初始值。
【局部变量】声明后、使用前必须得赋值!
0505-0505-0505-0505-0505-0505-0505-0505-
一、匿名对象
1、匿名对象是对象的简化形式。
2、匿名对象的两种使用方式:
(1)、当对对象的方法仅进行一次调用的时候。
(2)、匿名对象可以作为实际参数进行传递。
二、
1、每次new匿名对象都会产生一个新的对象,然后在调用它的方法或者属性,
调用属性执行完后,内存中产生垃圾,因此,匿名对象多调用方法。
2、当对一个对象的方法只调用一次时,可以使用匿名对象,这样写比较简单。
但是对一个对象调用多个成员(变量和方法)时,必须得给对象起个名字。
0506-0506-0506-0506-0506-0506-0506-0506-
一、封装:
1、是什么?
是指隐藏对象的属性和实现细节,仅对外提供公共的访问方式。
2、有什么好处?
将变化隔离、便于使用、提高重用性、提高安全性。
3、封装原则:
将不需要对外提供的内容都隐藏起来。
把属性都隐藏,提供公共方法对其访问。
4、常见的封装体:
方法、类、包、框架
0507-0507-0507-0507-0507-0507-0507-0507-
1、之所以对属性私有化,是为了防止直接方法属性。
2、为了让他人可以访问属性,程序得提供访问方法:setAge() getAge()
3、之所以对外提供访问方法,就因为可以在访问方法中加入逻辑判断语句,
对方问的数据进行操作,提高代码的健壮性。
class Person{
private age;
public void setAge(int age){
if(age>0 && age<130){
this.age=age;
speak();
}else{
System.out.println("非法的age");
}
}
public int getAge(){
return this.age;
}
public void speak(){
System.out.println("age="+age);
}
}
0508-0508-0508-0508-0508-0508-0508-0508-
一、构造函数
1、特点:
(1)、函数名与类名相同
(2)、不用定义返回值类型
(3)、不可以写return语句
2、作用:给对象初始化(对象一旦建立,就会调用与之对应的构造函数)。
3、注意:
(1)、默认构造函数的特点。
(2)、多个构造函数是以重载的方式存在的。
(3)、当一个类中没有定义构造方法时,系统会默认地给该类加入一个public空参的构造方法。
如:public Person(){}
(4)、当在类中自定义了构造函数后,默认的构造函数就没有了。
4、构造方法和一般方法的区别
(1)、在写法上不同。
(2)、在运行上也不同:
构造方法是在对象一建立就运行,给对象初始化。
一般方法对象调用才执行,是给对象添加对象具备的功能。
(3)、一个对象建立,构造方法只运行一次,而一般方法可以被该对象调用多次。
public class PersonDemo0508{
public static void main(String[] args){
Person p1=new Person();
Person p2=new Person(5);
Person p3=new Person(5,"李四");
}
}
class Person{
private int age;
private String name;
public void setAge(){
this.age=age;
}
public int getAge(){
return age;
}
Person(){
System.out.println("A:name: "+name+" ,age: "+age);
}
Person(int age){
this.age=age;
System.out.println("B:name: "+name+" ,age: "+age);
}
Person(int age,String name){
this.age=age;
this.name=name;
System.out.println("C:name: "+name+" ,age: "+age);
}
}
0509-0509-0509-0509-0509-0509-0509-0509-
构造代码块:
1、作用:给对象进行初始化。
2、对象一建立就运行,而且优于构造函数执行。
3、和构造函数的区别:
构造代码块是给所有的对象进行统一初始化
构造函数是给对应的对象初始化
public class PersonDemo0508{
public static void main(String[] args){
Person p1=new Person();
Person p2=new Person(5);
Person p3=new Person(5,"李四");
}
}
class Person{
private int age;
private String name;
public void setAge(){
this.age=age;
}
public int getAge(){
return age;
}
/*
构造代码块:
1、作用:给对象进行初始化。
2、对象一建立就运行,而且优于构造函数执行。
3、和构造函数的区别:
构造代码块是给所有的对象进行统一初始化
构造函数是给对应的对象初始化
4、构造代码块中定义的是不同对象共性的初始化内容
*/
{
System.out.pritln("cry.............");
}
Person(){
System.out.println("A:name: "+name+" ,age: "+age);
}
Person(int age){
this.age=age;
System.out.println("B:name: "+name+" ,age: "+age);
}
Person(int age,String name){
this.age=age;
this.name=name;
System.out.println("C:name: "+name+" ,age: "+age);
}
}
0510-0510-0510-0510-0510-0510-0510-0510-
1、private 可以修饰构造函数,当所有的构造函数被私有化后,该类就不能创建对象了,
最常见的应用就是【单例模式】
2、this作用:
(1)、区分局部变量和成员变量相同的情况。
(2)、调用成员属性和成员方法
3、this所代表的是本类的对象,一个类可以有多个对象,到底代表哪一个呢?
this代表的就是它所在函数所属对象的引用。
0512-0512-0512-0512-0512-0512-0512-0512-
1、构造函数之间相互调用只能使用this关键字
2、this语句只能放在构造函数的第一行,因为初始化要先执行
public class PersonDemo0508{
public static void main(String[] args){
Person p1=new Person();
Person p2=new Person(5);
Person p3=new Person(5,"李四");
}
}
class Person{
private int age;
private String name;
public void setAge(){
this.age=age;
}
public int getAge(){
return age;
}
Person(){
System.out.println("A:name: "+name+" ,age: "+age);
}
Person(int age){
this.age=age;
System.out.println("B:name: "+name+" ,age: "+age);
}
Person(int age,String name){
//构造函数之间相互调用只能使用this关键字
//this.age=age;
this(age);
this.name=name;
System.out.println("C:name: "+name+" ,age: "+age);
}
}
---------------------- ASP.Net+Android+IOS开发、 .Net培训、期待与您交流! ----------------------