3.Java值传递与引用传递( 三 )

public void println(boolean x),public void println(char x) ,这八大基本数据类型作为形参 。
回到正题,封装类如下,与方法遵循驼峰命名规则,idea通过alt+自动生成 。
public class Person {private String name;public String getName() {return name;}/*这个name是形式参数,通过Application类使用setName传值,然后这个name赋值给this.name,this.name就表示Person实体类的name,所以this.name=name这种写法的意思就是这个原因,而且set方法是void,没有返回值,只是单单的赋值,获取值由上方get方法负责,由此成功隐藏了类的属性,只能通过提供的set/get方法访问属性 。*/public void setName(String name) {this.name = name;}}--------------------------------------------------------------------------------public class Application {public static void main(String[] args) {Person person = new Person();person.name="张三";//错误写法person.setName("张三");//正确写法System.out.println(person.getName()); //张三}}
另外还可以通过内部封装来提高程序的安全性,直接在一些特殊属性上做些业务逻辑判断,比如
public class Person {private int age;public int getAge() {return age;}public void setAge(int age) {if(age>120||age<0){//不合法this.age=-1;}else{this.age = age;}}}------------------------------------------------------public class Application {public static void main(String[] args) {Person person = new Person();person.setAge(150);//不合法System.out.println(person.getAge()); //-1}}
另外对于逆向工程生成的实体类,都是封装好的,这跟是单例模式有关系 。
关于关键字小结
修饰的属性是通过get/set方法来访问的,那么同理它修饰方法的时候也是如此,不能直接访问,虽说能继承,但是子类继承过来之后,也不能对它进行直接引用访问,那是父亲的私有部分,只能对父类中的成员开放 。一般情况下,父类中会有公用接口get、set之类的方法,可以通过这个方法进行访问 。
class Demo {
void main ( args[]){
B b = new B();
b.();
//父类
class A{
void show () {
.out.("父类私有方法");
void () {
show();
//子类
class BA{
/*
父类私有方法
*/
5.Java继承
继承是java的核心,是对宏观的把握,封装是对底层的操作,包括多态都离不开继承 。
子类继承父类,就会拥有父类的所有方法;在Java中,所有的类都是直接或间接继承类,只是很多时候把 给省略了而已;
java中只有单继承,没有多继承,但是接口可以多继承;单继承指一个儿子只能由一个爸爸,亲生的那种,但是一个爸爸可以有多个儿子;
前提要么父类的属性是,可以直接.name=""这样去赋值;如果是修饰,则必须通过set/get方法赋值与获取值,这也是继承与封装的一种关系 。
比如,是父类,是派生类 。
public class Person /*extends Object */{public void say(){System.out.println("你好明天");}}------------------------------------------public class Student extends Person {}-----------------------------------------public class Application {public static void main(String[] args) {Student student = new Student();student.say();//能正常输出}}
6.Java继承之super与this
super是父类的,this是当前类的;
public class Person {protected String name = "父类"; //这里父类不用private修饰了,因为下面子类要用}-----------------------------------------public class Student extends Person {private String name = "子类";public void test(String name){System.out.println(name);//我是形参System.out.println(this.name);//子类System.out.println(super.name);//父类}}--------------------------------------------------public class Application {public static void main(String[] args) {Student student = new Student();student.test("我是形参");}}