学习java随笔第八篇:封装、继承、多态

java和c#一样都是面向对象的语言。

面向对象的语言有三大特征:封装、继承、多态

封装

封装:隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别。


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

private String sex;
public void setSex(String sex)
{
this.sex=sex;
}
public String getSex()
{
return sex;
}

private int age;
public void setAge(int age)
{
this.age=age;
}
public int getAge()
{
return age;
}

private double height;
public void setHeight(double height)
{
this.height=height;
}
public double getHeight()
{
return height;
}
}

public class Person1 {
public static void main(String arges[])
{
Person2 p2=new Person2();
p2.setName("小黄");
p2.setSex("男");
p2.setAge(20);
p2.setHeight(1.70);
System.out.println("姓名:"+p2.getName()+",性别:"+p2.getSex()+",年龄:"+p2.getAge()+",身高:"+p2.getHeight());
}
}

继承

继承:发生在类与类之间,在已存在的类的基础之上进行继承,通过继承来共享父类的成员和方法,并加入新的方法。可以单继承,也可以多继承。

在Java中,被继承的类叫超类(superclass),继承超类的类叫子类(subclass)。因此,子类是超类的一个功能上的扩展,它继承了超类定义的所有属性和方法,并且添加了特有功能方法。


class Father
{
public String name;
public int age;
public String eye;
public String height;
public String cutis;
//Father类的构造器
public Father()
{

}

public Father(String name,int age)
{
this.name=name;
this.age=age;
}
//重写Object类中的toString方法
/*public String toString()
{
String emp="姓名:"+name+",年龄:"+age;
return emp;
}*/
}

public class son extends Father
{
public String spectacle_frame;
public son()
{

}
public son(String spectacle_frame)
{
this.spectacle_frame=spectacle_frame;
}

public void getMes()
{
System.out.println(spectacle_frame);
}
public static void main(String arges[])
{
Father f=new Father("Father",50);
System.out.println(f);
son s=new son("Blue");
s.name="Tom";
s.age=20;
System.out.println(s);
s.getMes();
}
}

注释:重写Object类中的toString方法

取消注释:重写Object类中的toString方法

多态


多态:接口的多种不同的实现方式即为多态,同一个实体同时具有多种形式。


class fruit
{
public void getMes()
{
System.out.println("父类");
}
}

class apple extends fruit
{
public void getMes()
{
System.out.println("apple子类");
}
}

class orange extends fruit
{
public void getMes()
{
System.out.println("orange子类");
}
}

public class racing_cycel {
public void show(fruit f)
{
f.getMes();
}

public static void main(String arges[])
{
racing_cycel rc=new racing_cycel();
fruit f=new fruit();
apple a=new apple();
orange o=new orange();

rc.show(f);
rc.show(a);
rc.show(o);
}
}

运行结果

学习java随笔第八篇:封装、继承、多态,布布扣,bubuko.com

时间: 2024-10-06 10:48:53

学习java随笔第八篇:封装、继承、多态的相关文章

学习java随笔第七篇:java的类与对象

类 同一个包(同一个目录),类的创建与调用 class Man{ String name; void GetMyName() { System.out.println(name); } } public class Person { public static void main(String arges[]) { Man m=new Man(); m.name="小黄"; m.GetMyName(); } } 运行结果 不同的包(不同目录目录),类的创建与调用 package Peo

学习java随笔第六篇:数组

一维数组 创建一维数组并输出 public class OneDimensionalArray { public static void main(String argas[]) { int i[]=new int[10]; for(int j=0;j<i.length;j++) { i[j]=j; System.out.println(i[j]); } } } 多维数组 创建多维数组并输出 public class MultiDimensional { public static void m

学习java随笔第十一篇:java窗体程序

要开java的窗体程序,就要下载开发窗体的工具. 这里我用的是的myeclipse,可以直接在网上下载安装即可. 我用的是10.0版本的,如果需要汉化的话,可以看一下这篇文章:myeclipse.10安装和汉化方法 java窗体 package java20130629; import javax.swing.*; public class Form extends JFrame { public Form() { this.setLayout(null); JLabel jl=new JLab

学习java随笔第五篇:流程控制昨咨爪作阻鬃

今天有幸被召回母校给即将毕业的学弟学妹们讲我这两年的工作史,看了下母校没啥特别的变化,就是寝室都安了空调,学妹们都非常漂亮而已..好了不扯蛋了,说下今天的主题吧.这些天我在深度定制语法高亮功能的同时发现了博客园提供的一些有意思的函数,甚至有几个博客园都没用到,我也不知道怎么才能触发那些功能..打开这个js就可以看到很多好用的东西了,虽然写的不怎么样,但是至少有这些功能. ps: 推荐安装一个代码格式化的插件,否则一坨看着蛋疼.比如第一个就是 log,方便调试. www.hxtk.com/html

学习java随笔第五篇:流程控制

条件语句 if(表达式){方法体}else if(表达体)else{方法体} 简写形式:if... 一般形式:if...else... 完整形式:if...else if...else 分支语句 switch(表达式) { case 表达式1: { 方法体 break; } case 表达式2: { 方法体 break; } default: 方法体 } 循环语句 while循环语句 while(表达式) { 方法体 } do...while循环语句 do { 方法体 } while(表达式)

学习java随笔第九篇:java异常处理

在java中的异常处理和c#中的异常处理是一样的都是用try-catch语句. 基本语法如下 try { //此处是可能出现异常的代码 } catch(Exception e) { //此处是如果发生异常的处理代码 } finally语句 try { //此处是可能出现异常的代码 } catch(Exception e) { //此处是如果发生异常的处理代码 } finally { //此处是肯定被执行的代码 } 抛出异常 使用thows和throw语句抛出异常 public static vo

(1) 深入理解Java面向对象三大特性 封装 继承 多态

转眼已经工作快6年了,最开始做了2年J2EE:然后整了2年的数据仓库,主要是Cognos的报表开发:现在从事4G LTE核心网的开发,用的语言任然是Java,但写代码的机会不多,基本都是看代码找BUG,偶尔做点new feature也是在比较成熟的框架上复制.粘贴.修改,大部分时间还是在理解业务,钱多.事少.离家近,当时来这家公司图的是后面2点,2年过去了,英文水平有所提升,对敏捷开放也有一定的了解,但技术方面明显退步了或者说没有进步吧,本来以前也不怎么好,因为工作上用不到,自己也没怎么学习,所

初识JAVA(【面向对象】:pub/fri/pro/pri、封装/继承/多态、接口/抽象类、静态方法和抽象方法;泛型、垃圾回收机制、反射和RTTI)

JAVA特点: 语法简单,学习容易 功能强大,适合各种应用开发:J2SE/J2ME/J2EE 面向对象,易扩展,易维护 容错机制好,在内存不够时仍能不崩溃.不死机 强大的网络应用功能 跨平台:JVM,字节码 两个命令: javac helloworld.java:将Java文件编译为字节码的.class文件 java helloworld:运行Java程序...??暂时这么认为 数据类型: 普通数据类型:int a=3; 对象数据类型:使用关键字new,String s=new String("

类与对象 面向对象和面向过程对比 面向对象三大特征:封装 继承 多态

 初识面向对象 面向过程: 一切以事务的发展流程为中心. 面向对象: 一切以对象为中心. 一切皆为对象. 具体的某一个事务就是对象 打比方: 大象进冰箱 步骤: 第一步, 开门, 第二步, 装大象, 第三步, 关门 面向对象:大象, 你进冰箱. 此时主语是大象. 我操纵的是大象. 此时的大象就是对象 1. 面向过程: 一切以事物的流程为核心. 核心是"过程"二字, 过程是指解决问题的步骤, 即, 先?干什么, 后干什么. 基于该思想编写程序就好比在编写一套流水线. 是一种机械 式的编程