java OOP面向对象

(面向对象)类与对象

什么是类(月饼模具,学生类,老师类,人类) 

就是对具有相同属性和行为的物体的统称

用来描述同一类事物的属性和行为

(类是所有对象的通常)

什么是对象(每一个月饼就是一个对象,张三同学,李四老师,王五同学) 

客观存在的事物皆为对象

具体一点说:就是某一类事物的体现

类与对象的关系

一个月饼是月饼模具的具体实例(一个月饼是真实存在的实物)

对象是类的实体体现

一.如何创建类

1.创建一个类

//(类名首字母大写,如果由多个单词组成,建议每个单词首字母大写) 

访问修饰词 class 类名{

}

2.编写类的属性(成员变量)

属性:姓名 性别 身份证 科目 年龄......

String name;

String sex;

int age;

访问修饰词 数据类型 变量名;

3.编写类的行为(成员方法)

行为:吃饭 睡觉 打游戏 考试......

方法五要素:

访问修饰词   返回值   方法名  (方法参数){

方法体

}

案例:    (怎么创建类)

/*

在同一个java文件中只能有一个public修饰的class    (不包含内部类的说法)

而且public修饰class的类名必须与java文件名相同

*/

public class Demo01 {

public static void main(String[] args) {

}

1.创建类的方法

class  a{

2.编写类的属性(成员变量)

String name;

int age;

3.编写类的行为(成员方法)

public void eat(String str){

System.out.println(name+"的年龄"+age);

}

}

二.访问修饰词 

java访问修饰词(可以修饰类,可以修饰方法,可以修饰成员变量) 

private : 私有的,只能在本类中访问

public : 公共的,公开的,表示任何地方都可以访问 

default : (什么都不写)只能被本类或者同一个包中的类访问

protected : 受保护的,可以被本类,同一个包中的类,以及子类访问 

同一个类      同一个包      子类       任何地方

private              1

default              1             1

protected            1             1            1

public               1             1            1            1

在同一个java文件中只能有一个piblic修饰的class  (不包含内部类的说法)

而且public修饰的class的类名必须与java文件名相同

三.通过类创建对象

1.创建对象的格式

类名 对象名=new 类名();

2.调用成员变量(属性)  /  方法的格式(行为)

对象名.成员变量

对象名.成员方法()

例如:

public class Demo01 {

public static void main(String[] args) {

//创建对象的格式

//类名 对象名=new 类名();

Student gu=new Student();

//通过gu调用name属性            (成员变量的引用)

gu.name="姑苏";

gu.age=18;

//通过gu调用方法               (方法的引用)

gu.eat("KFC");

System.out.println("姑苏的性别:"+gu.sex);

}}

class  Student{

String name;

int age;

public void   eat (String str){

System.out.println(name+"正在"+str);

}

}

:构造方法

构造方法/构造函数/构造器

是一种特殊的方法

普通方法(五要素)

修饰词 返回值 方法名(方法参数){

方法体

}

(1):构造方法(特殊的方法)(四要素)

写法:

1.修饰词 方法名(方法参数){

方法体

}

(2):方法名与类同名 

class Student{

//学生类的属性.

String name;

String sex;

public void eat(String str){

System.out.println(name+"正在吃"+str);

}

//无参构造              (用来初始化成员变量)

public Student(){

name=null;

sex=null;

}

//有参构造       (方法的重载 ) 

public Student(String n,String s){

name=n;

sex=s;

}

}

构造方法 :(使用)

public  class Demo{

public static void main(String[] args) {

//创建对象的格式

//类名 对象名=new 类名();

Student gu=new Student();    (无参)

Student gu=new Student(n:”姑苏”,s:18);    (有参)

//通过gu调用name属性            (成员变量的引用)

gu.name="姑苏";

gu.age=18;

//通过gu调用方法               普通(方法的引用)

gu.eat("KFC");

}

}

//创建的类

class  Student{

//定义成员变量

String name;

int age;

//创建的方法

public void   eat (String str){

System.out.println(name+"正在"+str);

}

//无参构造       (用来初始化成员变量)

public Student(){

name=null;

age=0; 

}

//有参构造       (方法的重载 ) 

public Student(String n, int s){

name=n;

age=s;

}

}

构造方法 :(调用)

普通方法的调用

对象名.方法名()

构造方法的调用

new 类名();         创建对象的同时调用构造方法,用来初始化成员变量

如果创建类的时候,没有给类手动添加构造方法,系统会默认补充一个无参构造

如果创建类的时候,有手动添加构造方法,系统不会提供默认的无参构造

构造方法的作用:用来初始化成员变量

/*

如果没有对成员变量赋值

那么:

如果成员变量是基本类型数,则默认值为0

如果成员变量是引用类型(除了基本类型以外的所有类型),则默认值为null 

如果成员变量是boolean,则默认值是false

*/

构造方法的注意事项  [  理解  ] 

构造方法的创建

如果没有定义构造方法,系统将给出一个默认的无参构造

如果定义了构造方法,系统将不会提供默认的无参构造

构造方法的重载(方法名相同,参数列表不同)

如果自定义了带参数的构造方法,new对象的时候还是调用的无参构造,

就必须再写一个无参构造方法

推荐的构造方法的创建方式

无论是否使用,都需要手动添加一个无参构造

重要功能

可以使用带参数的构造,为成员变量进行初始化

.成员变量和局部变量

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

类中定义的位置 : 成员变量(类中方法外定义)

局部变量(方法内或方法的声明上)

初始化值不同: 成员变量(有默认的初始化值)

              局部变量(没有默认初始化值,必须先定义,赋值才可以使用)

生命周期: 成员变量(随着对象的存在而存在,随着对象的消亡而消亡)

局部变量(随着方法的调用而存在,随着方法的调用完毕而消失)

public class Demo03 {

int b;//成员变量

public static void main(String[] args) {

int a=10;//局部变量

}

//d也是局部变量

public static void test(int d){

int b=20;//局部变量

System.out.println(b);

}

}

上一篇:使用libhybris,glibc和bionic共存时的TLS冲突的问题


下一篇:面向对象程序设计(OOP)的三大基本特征(定义、特性、优缺点、java中的表现形式及应用)和五大基本原则