package com.Hanqi;
public class t20151015s {
public static void main(String[] args) {
// TODO Auto-generated method stub
telephone tp = new telephone("三星","1345686531");
System.out.println("我的手机品牌是: "+tp.getPinpai()+" ,号码是 "
+tp.getHaoma()+" 电量 "+tp.getDianliang());
tp.steDianliang(60);
tp.Call(" 13156 ");
//调用静态方法 不需要实例化,直接用类名就可以调用,在实例化中也可以调用静态方法
telephone.Jinji();
telephone.morenhm = "10086";
telephone.yijianbh();
//实例方法与静态方法的区别
telephone tp2 = new telephone("华为","1345686531");
tp2.yijianbh();//静态的无论你如何去调用,都是不会变化的,都是相同的一个数
tp2.steDianliang(20);
System.out.println(tp2.getPinpai()+" 剩余电量为 "+tp2.getDianliang());
tp2.Call(" 168621566 ");
iphone ip = new iphone("6s","13545646135");
ip.Call("468621566");
ip.playGame("切水果");
System.out.println(ip.getClass().toString());//返回完整类名、路径
System.out.println(ip.getClass().getName());
//转换 父类转换成子类 子类转换成父类
//子类转成父类 向上转型
telephone tp1 = new iphone();//定义一个父类,将子类赋给父类,调用的还是实际的实例--子类。
tp1.Call("136546");//子类重构了父类的方法的话,就会调用子类,如果没有重构,那么将会继续调用原父类的方法
//父类向子类转 向下转型
//父类转子类,不被允许的
// iphone ip3 = tp1;//将刚才转换成父类的子类,重新赋给子类,是不被允许的
//父类向子类转,只能强制转换,并且只能强转原来由子类转换成父类的,原本就是父类转换成父类的强转是会报错的;甚至子类完全等于父类也是无法转换的
//iphone ip3 = (iphone)tp1;
//ip3.playGame("546");
//向下转型之前,判断父类对象是否为子类对象
if(tp1 instanceof iphone)//如果父类对象为子类对象就会执行
{
//父类向子类转
iphone ip3 = (iphone)tp1;
ip3.playGame("546");
}
else //如果不是,那么就会输出一句话
{
System.out.println("bushi ");
}
String gg = new String("123");
String dd = new String("123");
if (gg.equals(dd))//判断字符串是否相等
{
System.out.println("字符串相等");
}
else
{
System.out.println("字符串不相等");
}
}
}
package com.Hanqi;
import javax.swing.plaf.synth.SynthSeparatorUI;
//电话
public class telephone {
//作为父类一定要写一个空的构造方法
public telephone()
{
}
//公共的 public ,外部访问是没有任何限制的
//私有的 private 只有在类的内部才可以访问
//保护的 protected 本包内类 其他包里无法读取到的
//如果不写权限符 默认 保护的 protected
//品牌
private String pinpai;
//号码
private String haoma;
/*
//setter方法
public void setPinpai(String pinpai)
{
this.pinpai = pinpai;
}
*/
//getter方法 构造 只读属性
//private String pinpai;
public String getPinpai()//读取 pinpai 的数据
{
return pinpai;
}
//这样就可以构造出一个只读属性。无法修改!
//setter 方法 可以访问类的内部
//将外部数据传输进来,进行对内部数据的修改
/*
public void setHaoma(String haoma)
{
this.haoma = haoma;
}
*/
public String getHaoma()
{
return haoma;
}
public telephone(String pinpai,String haoma)
{
this.pinpai = pinpai;
this.haoma = haoma;
System.out.println("品牌是"+this.pinpai+"手机号"+this.haoma);
}
//电量
private int dianliang = 50;
//设置电量
public void steDianliang(int dianliang)
{
//验证输入电量值是否是正确,有效的
//将电量属性私有,再另外进行操作 比如读取、修改、判断
if(dianliang < 0)
{
System.out.println("电量不能为负值!");
}
else if(dianliang > 100)
{
System.out.println("电量已满");
this.dianliang = 100;
}
else
{
this.dianliang = dianliang;
}
}
//方法名 第一个字母大写后面的小写
//获取电量
public int getDianliang()
{
return dianliang;
}
public void Call(String dfhm)
{
if(dfhm.trim().length() > 0)// .trim() 去空格 .length() 字符长度
{
System.out.println("拨出号码为:" + dfhm);
}
else
{
System.out.println("您输入的电话号码有误!");
}
}
//静态方法
public static void Jinji()// static 表示静态方法
{
System.out.println("拨打紧急电话119");
}
//属性也可以定义为静态
//public static String yijianbh;
//静态方法之间的调用
public static String morenhm; //morenhm 不是静态的无法调用,所以要将它定义为静态的
public static void yijianbh()
{
System.out.println("一键拨号,拨打号码是:"+ morenhm);//静态方法无法直接调用其他方法,要调用的一定是静态方法
}
//静态与实例的区别
//实例的使用时回复制一份,再使用
//静态的只是调用,没有另外一个。
//静态方法无法直接调用非静态方法,要把非静态方法转换成静态方法
//实例方法可以直接调用静态方法
}
package com.Hanqi;
public class iphone extends telephone {
//extends 表示两个类的继承关系
public iphone(String pinpai, String haoma) {
//父类
super(pinpai, haoma); //调用父类的构造方法
// TODO Auto-generated constructor stub
}
public iphone()
{
}
//自己的构造方法
public iphone (String zhanghao)
{
}
//加入游戏 名字第一个字母小写,后续大写。
public void playGame(String gameName)
{
System.out.println("游戏为 "+ gameName);
}
//重写
public void Call(String duifanghaoma)
{
System.out.println("我用6S拨打了 "+ duifanghaoma);
}
}
![]()