Java面向对象2

Posted 小鹿可可乐

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java面向对象2相关的知识,希望对你有一定的参考价值。

1.封装

目的:提高数据安全性,可实现对属性的访问权限控制,增加可维护性
封装:将属性私有化,使用private关键字完成属性私有化,只能本类访问
对每一个私有属性提供public的set和get这种方法供外界来访问我们的私有属性

1.1代码举例

class Girl{
	private String name;
	private int age;
	private String tel;
//提供一个公有的设置属性的方法
public void setName(String myName){
	name = myName;
}
public String getName(){
	return name;
}
	
	/*
		共有的方法可以被其他类访问,这个方法又是Girl的本类方法,可以访问私有属性,在其他类中通过调用这个公有的方法可以简接的来访问属性
	*/
	public void introduce(){
		System.out.println("名字:"+name+"年龄:"+age+"电话:"+tel);
	}
}
public class TestGirl{
	public static void main(String args[]){
		Girl g = new Girl();
		//通过公有的方法设置私有属性
		g.setName("小红");
		
		g.introduce();//获得的名字会在方法中
		//通过公有的get方法来获得私有属性
		String name = g.getName();
	}
}

2.this 关键字

2.1用法一

this只能在对象方法(无static)内使用;
谁调用方法,this就是谁

public void playGame(){
	System.out.println(this);
	System.out.println(this.name);//this也可省略
}


1、对于类的对象来说,属性是每个对象都有一份的,是数据隔离的,但方法是多个对象共享,
2、对象调用对象:本类的对象方法可以直接调用对象方法,隐藏了this,this就是调用playGame的p

2.1.1 this在封装中的使用

区分同名属性和局部变量名字

class Girl{
	private String name;

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


2.2用法2

在构造器中使用

3.构造器

用于创建对象的方法
1、语法:
权限修饰符 类名 (数据类型 参数名,…){
}
2、构造器本身是一个方法:

  • 无返回值,无void
  • 构造器的方法名必须和类名一致
  • 在方法中定义可以初始化参数列表
    3、构造器实例
class Hero{
    String name;
    String horse;
    /*
    有参数的构造器可以给属性初始化
     */
    public Hero(String name,String horse){
        this.name = name;
        this.horse = horse;
    }
    public void info(){
        System.out.println("名字:"+name+"坐骑:"+horse);
    }
}
public class test_1 {
    public static void main(String[] args) {
        Hero h = new Hero("刘备","的卢马");
        h.info();

    }
}

4、构造器间可以进行重载
5、一个类存在有参数的构造器那么默认的构造器就被覆盖,如果想使用默认构造器,就得把他显示

3.1 构造器间的调用

1、同一个类中构造器可以相互的调用,需要通过this来调用

 public Her(String name,String horse){
        this.name = name;
        this.horse = horse;
    }

    public Her(String name,String horse,int age){
        this(name,horse);//调用本类的初始化2个参数的构造器
        this.age = age;
    }

2、this(…)必须放到构造器的第一行
3、如果在构造器中调用其他构造器不创建对象,只初始化

4、static静态关键字

4.1 属性上

加上static的属性是类属性,静态属性
特点:

  • 可通过 类名.类属性 的方式,还可通过对象
class Student{
	static int scount();//类属性
}
public class Test {
    public static void main(String[] args) {
    	Student s = new Student();
    	System.out.println(Student.scount);//1
    	System.out.println(s.scount);//2
    	
    	
    }
  • 类属性的当前class文件加载进入jvm,类属性就被初始化,jvm执行完毕再销毁
  • 类属性可以被这个类每一个对象共享

4.2 方法上

类方法
语法:

特点:

  • 调用:类名.类方法 也可通过对象
  • 类方法的当前class文件加载进入jvm,类方法就被初始化,jvm执行完毕再销毁
  • 类方法不能访问对象属性和对象方法(类方法只能访问类属性和类方法)
  • 对象方法内可以访问对象属性,对象方法,类属性,类方法

4.3静态代码块

语法:

特点:

  • 主要用于初始化资源
  • 再main之前执行
  • 可以范围类属性(必须先定义)和方法

今天也要好好学习呀~

以上是关于Java面向对象2的主要内容,如果未能解决你的问题,请参考以下文章

JAVA方法的定义

Java中面向对象的三大特性之封装

三Java面向对象之猜拳游戏

Java面向对象

java学习---面向对象进阶

java面试准备之面向对象