package com.atguigu.java;publicclassOrderTest{publicstaticvoidmain(String[] args){
Order order =newOrder();
order.orderDefault =1;
order.orderPublic =2;//出了Order类之后,私有的结构就不可以调用了// order.orderPrivate = 3;//The field Order.orderPrivate is not visible
order.methodDefault();
order.methodPublic();//出了Order类之后,私有的结构就不可以调用了// order.methodPrivate();//The method methodPrivate() from the type Order is not visible}}
package com.atguigu.java1;import com.atguigu.java.Order;publicclassOrderTest{publicstaticvoidmain(String[] args){
Order order =newOrder();
order.orderPublic =2;// 出了Order类所属的包之后,私有的结构、缺省声明的结构就不可以调用了// order.orderDefault = 1;// order.orderPrivate = 3;//The field Order.orderPrivate is not visible
order.methodPublic();// 出了Order类所属的包之后,私有的结构、缺省声明的结构就不可以调用了// order.methodDefault();// order.methodPrivate();//The method methodPrivate() from the type Order is not visible}}
练习
package com.atguigu.exer;/*
* 1.创建程序,在其中定义两个类:Person和PersonTest类。定义如下:
* 用setAge()设置人的合法年龄(0~130),用getAge()返回人的年龄。
*
* 2.练习2:
* 2.1. 在前面定义的Person类中添加构造器,利用构造器设置所有人的age属性初始值都为18。
* 2.2. 修改上题中类和构造器,增加name属性,使得每次创建Person对象的同时初始化对象的age属性值和name属性值。
*
*/publicclassPerson{privateint age;private String name;publicPerson(){
age =18;}publicPerson(String n,int a){
name = n;
age = a;}publicvoidsetAge(int a){if(a <0|| a >130){// throw new RuntimeException("传入的数据非法!");
System.out.println("传入的数据非法!");return;}
age = a;}publicintgetAge(){return age;}//绝对不要这样写!!// public int doAge(int a){// age = a;// return age;// }publicvoidsetName(String n){
name = n;}public String getName(){return name;}}package com.atguigu.exer;/*
* 在PersonTest类中实例化Person类的对象b,
* 调用setAge()和getAge()方法,体会Java的封装性。
*
*/publicclassPersonTest{publicstaticvoidmain(String[] args){
Person p1 =newPerson();// p1.age = 1;编译不通过
p1.setAge(12);
System.out.println("年龄为:"+ p1.getAge());// p1.doAge(122);
Person p2 =newPerson("Tom",21);
System.out.println("name = "+ p2.getName()+",age = "+ p2.getAge());}}
com.atguigu.java1.PersonTest.java
package com.atguigu.java1;/*
* 类的结构之三:构造器(或构造方法、constructor)的使用
* construct:建设、建造。 construction:CCB constructor:建设者
*
* 一、构造器的作用:
* 1.创建对象
* 2.初始化对象的信息
*
* 二、说明:
* 1.如果没有显式的定义类的构造器的话,则系统默认提供一个空参的构造器
* 2.定义构造器的格式:权限修饰符 类名(形参列表){}
* 3.一个类中定义的多个构造器,彼此构成重载
* 4.一旦我们显式的定义了类的构造器之后,系统就不再提供默认的空参构造器
* 5.一个类中,至少会有一个构造器。
*/publicclassPersonTest{publicstaticvoidmain(String[] args){//创建类的对象:new + 构造器
Person p =newPerson();
p.eat();
Person p1 =newPerson("Tom");
System.out.println(p1.name);}}classPerson{//属性
String name;int age;//构造器publicPerson(){
System.out.println("Person().....");}publicPerson(String n){
name = n;}// publicPerson(String n,int a){
name = n;
age = a;}//方法publicvoideat(){
System.out.println("人吃饭");}publicvoidstudy(){
System.out.println("人可以学习");}}
package com.atguigu.java1;/*
* 总结:属性赋值的先后顺序
*
*
* ① 默认初始化
* ② 显式初始化
* ③ 构造器中初始化
*
* ④ 通过"对象.方法" 或 "对象.属性"的方式,赋值
*
* 以上操作的先后顺序:① - ② - ③ - ④
*
*/publicclassUserTest{publicstaticvoidmain(String[] args){
User u =newUser();
System.out.println(u.age);
User u1 =newUser(2);
u1.setAge(3);
u1.setAge(5);
System.out.println(u1.age);}}classUser{
String name;int age =1;publicUser(){}publicUser(int a){
age = a;}publicvoidsetAge(int a){
age = a;}}
package com.atguigu.exer3;/*
* 写一个测试程序。
(1) 创建一个Customer ,名字叫 Jane Smith,
他有一个账号为1000,余额为2000元,年利率为 1.23% 的账户。
(2) 对Jane Smith操作。
存入 100 元,再取出960元。再取出2000元。
打印出Jane Smith 的基本信息
成功存入 :100.0
成功取出:960.0
余额不足,取款失败
Customer [Smith, Jane] has a account: id is 1000,
annualInterestRate is 1.23%, balance is 1140.0
*/publicclassCustomerTest{publicstaticvoidmain(String[] args){
Customer cust =newCustomer("Jane","Smith");
Account acct =newAccount(1000,2000,0.0123);
cust.setAccount(acct);
cust.getAccount().deposit(100);
cust.getAccount().withdraw(960);
cust.getAccount().withdraw(2000);
System.out.println("Customer["+ cust.getLastName()+","+ cust.getFirstName()+"] has a account: id is "+ cust.getAccount().getId()+",annualInterestRate is "+
cust.getAccount().getAnnualInterestRate()*100+"% ,balance is "+ cust.getAccount().getBalance());}}