JAVA(2)
java面向对象编程的四大特征:
1、抽象
2、封装
3、继承
4、多态
封装
//职员
class Clerk
{
public String name;
//private私有的
private int age;
private float salary; public Clerk(String name,int age,float sal)
{
this.name=name;
this.age=age;
this.salary=sal;
}
//通过一个成员方法去控制和访问私有的属性
public float getSal()
{
return this.salary;
}
java提供四种访问控制修饰符(控制方法和变量的访问权限):
1.公开级别:用public修饰,对外公开
2.受保护级别:用protected修饰,对子类和同一个包中的类公开
3.默认级别:没有修饰符号,向同一个包的类公开
4.私有级别:用private修饰,只有类本身可以访问,不对外公开
包-必要性
包的三大作用:
区分相同名字的类
当类很多时,可以很好地管理类
控制访问范围
包的打包命令:
package com.xxx
包的命名规范:小写字母
java中常用包:
java.lang.* 自动引入
java.util.* 工具包
java.net.* 网络开发包
java.awt.* 窗口工具包
包的引入:
inport 包;(如:import java.awt.*;)
继承
class Pupil
{
//定义成员属性
private int age;
private String name;
private float fee; //交费
public void pay(float fee)
{
this.fee=fee;
}
}
继承解决类重复问题
所有的子类不需要重新定义属性和方法,只需要通过extends语句声明继承父类
class 子类 extends 父类
私有属性不能被继承(private)
继承-注意
子类最多只能继承一个父类(指直接继承)
java所有类都是Object类的子类
JDK6中有202个包3777个类、接口、异常、枚举、注释和错误
开发时多使用jdk帮助文档
有些时候必须继承一些类来实现更多的功能:
package com.shun;
import javax.swing.*;
public class Demo2 extends JFrame { public static void main(String []args)
{
Demo demo2=new Demo2(); } public Demo2()
{
this.setVisible(true);
this.setSize(200,200);
}
}
方法重载&方法覆盖
方法重载注意事项:
方法名相同
方法的参数类型,个数,顺序至少有一项不同
方法返回类型可以不同
方法的修饰符可以不同
<只是返回类型不一样,不能够构成重载>
方法的覆盖(子类有一个方法与父类的名称、返回值、参数一样)
public class Demo3{
public static void main(String []args){
//创建一只猫
Cat cat1=new Cat();
cat.cry();
dog1.cry();
}
}
class Animal
{
int age;
String name;
public void cry()
{
System.out.println("我是动物");
}
}
//猫猫类
class Cat extends Animal
{
//覆盖父类
public void cry()
{
System.out.println("猫猫叫");
}
}
//狗类
class Cat extends Animal
{
//覆盖父类
public void cry()
{
System.out.println("狗叫");
}
}
注意:
1.子类方法的返回类型、参数、方法名称要和父类方法的返回类型、参数方法名称完全一样,否则编译出错。
2.子类方法不能缩小父类方法的访问权限。(比如public不能被protected覆盖)
多态
package com.shun;
public class Demo5 { public static void main(String [] args){
//多态
/* Cat cat=new Cat();
cat.cry();
Dog dog=new Dog();
dog.cry();*/
Animal an=new Cat();
an.cry();
an=new Dog();
an.cry();
}
}
//动物类Animal
class Animal
{
String name;
int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name=name;
}
public int getAge() {
return age;
}
public void setAge(int age){
this.age=age;
}
//动物会叫
public void cry()
{
System.out.println("不知道怎么叫");
}
}
class Dog extends Animal
{
//狗叫
public void cry()
{
System.out.println("狗叫");
}
}
class Cat extends Animal
{
//猫自己叫
public void cry()
{
System.out.println("猫叫");}
多态注意事项:
java允许父类的引用变量引用它的子类的实例(对象)Animal animal=new Cat();
这种转换自动完成;
多态定义:一个引用(类型)在不同情况下的多种状态。
抽象类的必要性:
package com.test2;
public class Test { public static void main(String[] args) { }
}
abstract class Animal
{
String name;
int age;
//动物会叫
public void cry();
abstract public void cry(); }
//当一个类继承的父类是抽象类的话,需要我们把抽象类中的所有抽象方法全部实现
class Cat extends Animal
{
//实现父类cry
public void cry()
{
//do nothing
System.out.println("猫叫");
}
}
定义:
1、用abstract关键字来修饰一个类时,这个类就叫抽象类
2、用abstract关键字来修饰一个方法时,这个方法就是抽象方法
3、抽象方法在编程中用的不多,但在公司笔试时较常见
注意:
1、抽象类不能被实例化
2、抽象方法不一定要包含abstract方法
3、一旦包含abstract方法,则这个类必须声明为abstract
4、抽象方法不能有主体
接口:给出一些没有内容的方法,封装到一起,要使用时将这些方法写出来
<class 类名 implements 接口{
方法;
变量;
}
>
接口:体现程序设计多态和高内聚低耦合的设计思想
<当一个类实现了一个接口,就要求该类把这个接口的所有方法统统实现
interface Usb{
//声明两个方法
//开始工作
public void start();
//停止工作
public void stop();
}
//编写了照相机类
class Camera implements Usb{
public void start(){
System.out.println("开始工作");
}
public void stop(){
System.out.println("停止工作");
}
}
class Phone implement Usb{
public void start(){
System.out.println("开始工作");
}
public void stop(){
System.out.println("结束工作");
}
}
//计算机
class Computer{
//开始使用usb接口
public void useUsb(Usb usb){
usb.start();
usb.stop();
}
}
//接口继承别的接口
class Base{
}
interface Tt{
}
interface Son extends Tt{
}
public class Demo4_2{
public static void main(String[] args){
System.out.println(Usb.a);
Computer computer=new Computer();
//创建Camera
Camera cameral=new Camera();
//创建Phone
Phone phone1=new Phone();
computer.useUsb(camera1);
computer.useUsb(phone1);
}
JAVA(2)的更多相关文章
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- 故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题
背景起因: 记起以前的另一次也是关于内存的调优分享下 有个系统平时运行非常稳定运行(没经历过大并发考验),然而在一次活动后,人数并发一上来后,系统开始卡. 我按经验开始调优,在每个关键步骤的加入如 ...
- Elasticsearch之java的基本操作一
摘要 接触ElasticSearch已经有一段了.在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题.看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得 ...
- 论:开发者信仰之“天下IT是一家“(Java .NET篇)
比尔盖茨公认的IT界领军人物,打造了辉煌一时的PC时代. 2008年,史蒂夫鲍尔默接替了盖茨的工作,成为微软公司的总裁. 2013年他与微软做了最后的道别. 2013年以后,我才真正看到了微软的变化. ...
- 故障重现, JAVA进程内存不够时突然挂掉模拟
背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize= # This ...
- 死磕内存篇 --- JAVA进程和linux内存间的大小关系
运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] ...
- 【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用
有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个 ...
- Java多线程基础学习(二)
9. 线程安全/共享变量——同步 当多个线程用到同一个变量时,在修改值时存在同时修改的可能性,而此时该变量只能被赋值一次.这就会导致出现“线程安全”问题,这个被多个线程共用的变量称之为“共享变量”. ...
- Java多线程基础学习(一)
1. 创建线程 1.1 通过构造函数:public Thread(Runnable target, String name){} 或:public Thread(Runnable target ...
- c#与java的区别
经常有人问这种问题,用了些时间java之后,发现这俩玩意除了一小部分壳子长的还有能稍微凑合上,基本上没什么相似之处,可以说也就是马甲层面上的相似吧,还是比较短的马甲... 一般C#多用于业务系统的开发 ...
随机推荐
- box-sizing 属性、min-width属性、max-width属性
1.box-sizing 这个属性是CSS3新增的属性.IE8开始兼容.box-sizing: border-box; border-box,就是边框的这个小盒.这个属性命令,width数值指的是b ...
- composer 一些使用说明
1 使用订制的包 配置 "repositories": [ { "type": "path", "url": " ...
- git clone带用户名和密码的方式
git clone http://username:password@127.0.0.1/res/res.git
- 【小月博客】 Html5 上传图片 移动端、PC端通用
在博客园注册账号有些天了,感觉有些许欣慰,自己写的东西有人在看,有人在评论很是开心.(ps: 满足一下虚荣心吧!) 废话不多说了,说一下今天给大家分享的是 html5上传图片.我们是在移动端使用的,但 ...
- Spring Boot中的注解
文章来源:http://www.tuicool.com/articles/bQnMra 在Spring Boot中几乎可以完全弃用xml配置文件,本文的主题是分析常用的注解. Spring最开始是为了 ...
- PHP造PDO对象和事务功能
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- gtp转换mbr
http://wenku.baidu.com/link?url=P_t0U8Q-LIUdxVGHBefipAvbV6fg3jnX8hc8ugaRoo5WWd8GJePO8sBbtLON15gvOZh4 ...
- sae评测报告-2013最新版
Author:MoonXue 上线时间:2009年9月,国内最早. 支持语言:PHP.JAVA.PYTHON 版本管理:SVN 可选数据库:MySQ.KVDB(非关系型) 特色服务:Web服务器配置工 ...
- java 中关于synchronized的通常用法
package j2se.thread.test; /*** * synchronized(class)很特别,它会让另一个线程在任何需要获取class做为monitor的地方等待. * class与 ...
- Android中ListView控件的使用
Android中ListView控件的使用 ListView展示数据的原理 在Android中,其实ListView就相当于web中的jsp,Adapter是适配器,它就相当于web中的Servlet ...